题目要求是将给出的秒数转化为xx:xx:xx的格式,最大秒数默认不超过359999,即99:59:59。解题思路是利用除法的取整和取余运算,从最高位计算到最低位,只需根据题设注意时分秒各自的进位方式。代码如下:
def make_readable(seconds):
num1 = seconds // 36000
num2 = seconds % 36000 // 3600
num3 = seconds % 36000 % 3600 // 600
num4 = seconds % 36000 % 3600 % 600 // 60
num5 = seconds % 36000 % 3600 % 600 % 60 // 10
num6 = seconds % 36000 % 3600 % 600 % 60 % 10
return '%s%s:%s%s:%s%s'%(num1,num2,num3,num4,num5,num6)
代码这样写很难看,这里我们可以用到Python的divmod()函数,该函数输入两个参数,第一个是被除数,第二个是除数。返回两个值(包含两个值的tuple),第一个为整数商,第二个为余数。例如:
a, b = 7, 2
c, d = divmod(a, b)
print(c, d)
利用divmod()函数,我们将转换时间的代码改一下:
def make_readable(seconds):
num1, a = divmod(seconds, 36000)
num2, a = divmod(a, 3600)
num3, a = divmod(a, 600)
num4, a = divmod(a, 60)
num5, num6 = divmod(a, 10)
return '%s%s:%s%s:%s%s'%(num1,num2,num3,num4,num5,num6)
利用了divmod()函数,以及使用了临时变量a传递余数部分,减少了代码量,使代码整洁美观,提高了可读性。可以继续思考更有效的算法或是表示方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)