1026 程序运行时间 python3

题目戳链接:PAT 1026

坑1:python的四舍五入函数round()给定的测试用例无法调试成功。

原因:跟浮点数的精度有关。机器中浮点数不一定能精确表达,因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理,如图所示58.5期望输出是59

解决:一个自定义的四舍五入的函数beRounding()

坑2:存在测试结果是部分正确时考虑是否为对输出格式做了转换,‘9’转换为‘09’

解决:一个时分秒不满10自动补零的函数 beDoubleDigit()

Python初学者,附上完成代码,欢迎沟通指正

"""
Tips:
1. round() rounding is incorrect, in some scanarios, when equal to 0.5, must to add a function
2. pay attention to the less than 10, you should add '0'
"""
def beRounding(number):
    if str(number)[-1] == '5':
        return(round(float(str(number)[:-1]+'6')))
    else:
        return (round(number))

def beDoubleDigit(number1):
    if(number1 < 10):
        return '0' + str(int(number1))
    else:
        return int(number1)

number = input().split()
# print(number)
totalSecond = (int(number[1]) - int(number[0])) / 100
# print(totalSecond)
h = beDoubleDigit(totalSecond // 3600)
# print(h)
m = beDoubleDigit(( totalSecond - int(h) * 3600 ) // 60)
# print(m)
s = beDoubleDigit(beRounding(totalSecond - int(h) * 3600 - int(m) * 60))

print(str(h) + ':' + str(m) + ':' + str(s))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值