题目戳链接: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))