Python程序将毫秒转换为小时,分钟和秒的逻辑错误

时间:2019-03-21 07:24:26

标签: python-3.x function

我正在学习python,并且我有一个将毫秒转换为小时,分钟和秒的程序。我得到了与示例运行不同的错误输出。这是问题和示例运行 Question description and sample run

我想出了下面的代码

def convertMillis(millis):
  seconds=(millis/1000)%60
  minutes=(millis/(1000*60))%60
  hours=(millis/(1000*60*60))%24

return hours,minutes,seconds 

def main():
  millis=int(input("Enter time in milliseconds "))
  con_hour,con_min,con_sec = convertMillis (millis)
  print("%d:%d:%d" % (con_hour, con_min, con_sec))

main()

当我使用convertMillis(5500),convertMillis(100000)的示例运行中的值测试程序时,我得到了正确的值,但是当我尝试使用convertMillis(555550000)时,我得到了10:19:10而不是154 :19:10

这是我的输出 Output

1 个答案:

答案 0 :(得分:0)

在计算秒数时,使用% 60来计算秒数,即计算出整数分钟后剩下的秒数(因此,如果我们总共有140秒,则2分钟内将占120秒)。类似地,对于分钟,% 60是分钟数,即分钟数是考虑到整个小时数后剩下的值(因此,如果我们有450分钟,则占去7小时后还剩下30分钟)。

但是对于计算小时数的最后一步,我们需要总小时数,而不是在计算了天数后剩下的时间。所以我们只想要:

hours = (millis // (1000 * 60 * 60))

没有% 24

请注意,/ in Python 3 is not integer division。为此,您需要//。否则您会得到浮点数:

>>> 421//60
7
>>> 421/60
7.016666666666667