Python: 1028 人口普查_测试点3错误_测试点超时

简介: Python: 1028 人口普查_测试点3错误_测试点超时

测试点3在于如果输入的几个数据都不在范围内,要不大于20140906, 要不小于18140906,这一原因没考虑进去;

测试点4主要是python本身原因,当然更可能是我自己没有优化好,现在已经解决好了!


下面代码的依次修改 以及 思路:

初始代码:(完全不建议)(测试点4不通过,运行超时)

num = int(input())
time = {}
for i in range(num):
    name, date = input().split()
    date = int(''.join(list(date.split('/'))))
    if date > 20140906:
        continue
    if date < 18140906:
        continue
    time[name] = date
name = list(time.keys())
date = list(time.values())
leg = len(name)
if leg != 0:
    d, d_1 = date[0], 0
    c, c_1 = date[0], 0
    for i in range(1, leg):
        if d < date[i]:
            d = date[i]
            d_1 = i
        if c > date[i]:
            c = date[i]
            c_1 = i
    print('{} {} {}'.format(leg, name[c_1], name[d_1]))
else:
    print(0)


第一次修改: (优化又测试点4(运行超时)依旧不行,但是代码简化了很多)

现在对上面代码做下面几个方面的修改:

1.修改1:比较字符串这里不需要将譬如2014/09/06先去掉/在转化int型

(即转化为20140906,之前我还更傻,把20140906再转化为[2014, 9, 6]依次进行比较年月日,十分十分麻烦!哭了)

可以直接进行字符串比较(类似于strcmp()方法),这里举个例子如下代码

time = {}
name = 'John'
date = '2014/09/06'
if date >= '1814/09/06' and date <= '2014/09/06':
    time[name] = date

2.修改2,之前日期比大小,自己去比,其实用列表的sort()可以将字符串从小到大排列,最后取最左侧和最右侧即可

num = int(input())
time = []
def code(num):
    return num[0]
for i in range(num):
    name, date = input().split()
    if date >= '1814/09/06' and date <= '2014/09/06':
        time.append((date, name))
time.sort(key=code)  # 以传入的第二个参数进行排序
if len(time) != 0:  # 剑指测试3,假使系统传入了很多数据,但是没有一个是符合要求的,那么输出报错
    print(len(time), time[0][1], time[-1][1])
else:
    print(0)


第二次修改:上面又建立列表,又对列表进行排序,实际上是多出了很多多余得到步骤

(1).我们只是需要获取最大的日期,和最小的日期,不需要将所有的日期都存储在列表中然后对列表进行排序,这样子虽然存储很容易,排序也只需要sort()一下就好了,但是会增加时间和空间

(2).我们不需要获取所有名字和日期,我们只是在当前循环会用到一次,之后就不会用到,所以不需要保存在列表里 。

当然,这里虽然比上面的稍微复杂一点,但是时间运行会短

完美!!!!

num = int(input())
time = []
min_date = '1814/09/06'  # 年龄最小者出生日期的初识值
max_date = '2014/09/06'  # 年龄最大者出生日期的初识值
count = 0  # 计算满足在1814/09/06日期至2014/09/06的人数,初始值为0
for i in range(num):  # 传入num个人,所以进行num次循环
    name, date = input().split()
    if date <= '2014/09/06' and date >= '1814/09/06':  # 符合0-200岁的进入下方代码
        if date >= min_date:  # 筛选年龄最小者的name和date
            min_name = name
            min_date = date
        if date <= max_date:  # 筛选年龄最大者的name和date
            max_date = date
            max_name = name
        count += 1
if count != 0:
    print('{} {} {}'.format(count, max_name, min_name))
else:
    print(0)


c8afd1b4a66f4c69a0007d7fe865c168.png



目录
相关文章
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
323 1
|
3月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
234 18
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
281 61
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
3月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
227 0
|
4月前
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
4月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
4月前
|
数据采集 Web App开发 iOS开发
解决Python爬虫访问HTTPS资源时Cookie超时问题
解决Python爬虫访问HTTPS资源时Cookie超时问题
|
5月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
153 10
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
541 5

推荐镜像

更多