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



目录
相关文章
|
9天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
24 4
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
124 5
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
144 3
|
19天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
22天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
46 3
|
21天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
36 1
|
20天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
65 4
|
3月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
72 6
基于Python访问Hive的pytest测试代码实现
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
下一篇
无影云桌面