Нужна помощь / обратная связь с добавлением вместе два раза в Python - PullRequest
0 голосов
/ 13 сентября 2018

Я сейчас работаю над программой, касающейся арифметики часов Моя программа запрашивает пользователя два раза, в стандартном формате и в военное время [ЧЧ: ММ: СС]. Затем я добавляю эти два раза вместе, чтобы получить мой окончательный результат. Мне нужна помощь по двум вопросам, которые я пытался решить, но я много боролся с ними.

В конце концов, это должно выглядеть так: ЧЧ: ММ: СС + ЧЧ: ММ: СС = ЧЧ: ММ: СС Результат все зависит от того, что пользователь вводит

  1. Скажите, пожалуйста, как я могу предотвратить переход времени на 24 часа, 60 минут и 60 секунд? Это срезы, и суммарное время не имело бы смысла, если бы часы, минуты или секунды прошли их срезы. Я хотел знать, как я могу это сделать, я думал, что для этого потребуются целочисленные операторы деления или модуля (%). Я был бы очень признателен за вашу помощь здесь. Мне нужно держать свое время в этих границах, потому что пользователь может выбрать любое время, которое может перекинуться. После того, как эти отсечки достигнуты, время должно вернуться к нулю и обернуться оттуда.

  2. Как мне обеспечить, чтобы мое окончательное время оставалось в формате [ЧЧ: ММ: СС]? Я был бы очень признателен за вашу помощь с этим. Иногда формат выходит как [H: M: S], чего я не хочу.

Я был бы очень признателен за вашу помощь по этим двум вопросам, с которыми я борюсь. Я так близок к тому, чтобы все было правильно. Мне просто нужно знать код для предоставления времени, необходимого для перезапуска после достижения определенного предела, а также способ сохранить формат [ЧЧ: ММ: СС] на месте. Мой код для программы указан ниже. Большое спасибо,

код

ClockTime1 = input('Enter clock two timie (in military time) in 
the format HH:MM:SS , it has to be in this format in order to 
function correctly :')
ClockTime2= input('Enter clock one time (in military time) in 
the format HH:MM:SS , it has to be in this format in order to 
function correctly :')
print(ClockTime1.split(':'))
print(ClockTime2.split(':'))
ClockTime1Hours= int((ClockTime1.split(':')[0]))
ClockTime2Hours= int((ClockTime2.split(':')[0]))
ClockTime2Minutes= int((ClockTime2.split(':')[1]))
ClockTime1Seconds= int((ClockTime1.split(':')[2]))
ClockTime2Seconds= int((ClockTime2.split(':')[2]))
print(ClockTime1Hours,'hours for clock 1')
print(ClockTime2Hours,'hours for clock 2')
print(ClockTime1Minutes,'minutes for clock 1')
print(ClockTime2Minutes,'minutes for clock 2')
print(ClockTime1Seconds,'seconds for clock 1')
print(ClockTime2Seconds,'seconds for clock 2')
ClockTime1Hours += ClockTime2Hours
print('sum of clock hours=',ClockTime1Hours)
ClockTime1Minutes += ClockTime2Minutes
print('sum of clock minutes=',ClockTime1Minutes)
ClockTime1Seconds += ClockTime2Seconds
print('sum of clock seconds=',ClockTime1Seconds)

Что показывает консоль:

Enter clock two time (in military time) in the format HH:MM:SS 
, it has to be in this format in order to function correctly 
:2:00:00

Enter clock one time (in military time) in the format HH:MM:SS 
, it has to be in this format in order to function correctly 
:3:00:00
['2', '00', '00']
['3', '00', '00']
2 hours for clock 1
3 hours for clock 2
0 minutes for clock 1
0 minutes for clock 2
0 seconds for clock 1
0 seconds for clock 2
sum of clock hours= 5
sum of clock minutes= 0
sum of clock seconds= 0
Sum of Times=5:0:0

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Я думаю, что модуль времени Python может помочь

import time

a = "00:00:00 1971"
a = time.mktime(time.strptime(a,"%H:%M:%S %Y"))
ClockTime1 = input('Enter clock two timie (in military time) in the format HH:MM:SS , 
it has to be in this format in order to function correctly :')
ClockTime2= input('Enter clock one time (in military time) in the format HH:MM:SS , 
it has to be in this format in order to function correctly :')
ClockTime1+=" 1971"
ClockTime2+=" 1971"
ClockTime1 = time.mktime(time.strptime(ClockTime1,"%H:%M:%S %Y"))
ClockTime2 = time.mktime(time.strptime(ClockTime2,"%H:%M:%S %Y"))
print(time.strftime("%H:%M:%S", time.localtime(ClockTime1-a+ClockTime2-a+a)))
0 голосов
/ 13 сентября 2018

Я думаю, что мы можем использовать некоторые встроенные функции datetime вместо того, чтобы вычислять их самостоятельно:

from datetime import datetime,timedelta
str_t1="23:00:01"
str_t2="23:00:01"
dt1 = datetime.strptime(str_t1, '%H:%M:%S')
dt2 = datetime.strptime(str_t2, '%H:%M:%S')
dt2_delta=timedelta(hours=dt2.hour, minutes=dt2.minute, seconds=dt2.second)
dt3=dt1+dt2_delta
str_t3=datetime.strftime(dt3,'%H:%M:%S')

Вывод для str_t3:

str_t3 '22: 00: 02 '

...