Программа Python для преобразования миллисекунд в часы, минуты и секунды логическая ошибка - PullRequest
0 голосов
/ 21 марта 2019

Я изучаю Python, и у меня есть программа, которая конвертирует миллисекунды в часы, минуты и секунды. Я получаю неправильный вывод, который отличается от примера запуска. Вот вопрос и пример запуска Описание вопроса и образец прогона

Я пришел с кодом ниже

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

Вот мой вывод выход

1 Ответ

0 голосов
/ 21 марта 2019

Для вычисления секунд используется % 60, так что количество секунд - это то, что осталось после учета целого числа минут (поэтому, если бы у нас было всего 140 секунд, 120 было бы учтено за 2 минуты). Точно так же для минут % 60 означает, что количество минут - это то, что осталось после учета целого количества часов (поэтому, если бы у нас было 450 минут, 30 минут осталось бы после учета 7 часов).

Но для последнего шага расчета часов нам нужно общее количество часов, а не то, что осталось после учета количества дней. Итак, мы просто хотим:

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

без % 24.

Обратите внимание, что / в Python 3 не является целочисленным делением . Вам нужно // для этого. Или вы получите числа с плавающей запятой:

>>> 421//60
7
>>> 421/60
7.016666666666667
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...