#python
#python
Вопрос:
У меня возникли проблемы с выполнением задачи.Задача требует, чтобы пользователь установил время (от 1 до 12), затем объявил, является ли оно am или pm, и на сколько часов его пересылать.Время пересылки также должно показывать отметку времени am / pm в зависимости от того, сколько оно пересылается.Пример:
Input time: 8
am or pm : am
forward: 5
new time: 1pm
Я пробовал это:
time = eval(input('Input time(1-12):'))
ampm = eval(input('am or pm?'))
forward = eval(input('Forward:'))
if ampm == am:
if time forward > 24:
new time = (time forward)%24
x = 'am'
else:
new time = (time forward)%12
x = 'pm'
print('New time is:' , new time , x)
if ampm == pm:
if time forward > 12:
new time = (time forward)%12
x = 'pm'
else:
new time = (time forward)%24
x = 'am'
print('New time is:' , new time , x)
Комментарии:
1. какую ошибку вы видите?
2. Иногда am и pm путаются при пересылке, например, когда я пересылаю 8 утра с 5 часов, я получаю 1 час дня, что нормально, но когда я пересылаю 8 утра с 25 часов, я получаю 9 вечера вместо 9 утра.
3. Где
am
иpm
определены? Вы проверяли, каково результирующее значениеampm
при запуске программы, и оценивается ли оно как равноеam
или нет, и оценивается ли оно как равноеpm
или нет? Возможно, вы имели в виду сравнение со строками'am'
и'pm'
?4. Это не может быть вашим реальным кодом; повторяющиеся появления
new time
— это все синтаксические ошибки.5. А? Это мой код, и у меня нет ни одной синтаксической ошибки, я получаю неправильные результаты только потому, что мой код неправильный.
Ответ №1:
Я предлагаю просто преобразовать время в формат 24 часа, переадресовать, а затем преобразовать обратно в формат 12 часов (am / pm).
Вот как я бы это сделал:
time = int(input('Input time(1-12):'))
ampm = input('am or pm?')
forward = int(input('Forward:'))
# first get the 24h formatted time
time_24 = time 12 if ampm == 'pm' else time
# then forward time to max 24, else start over from 0
time_24 = (time_24 forward) % 24
# finally convert back to 12h(am/pm) format
time_12 = f'{time_24-12}pm' if time_24 > 12 else f'{time_24}am'
# print out the forwarded time
print(time_12)
Комментарии:
1. я получаю сообщение об ошибке, когда пробую ваш код, в нем говорится, что time_24 не определено, когда я устанавливаю ‘pm’ на входе.
2. nvm я исправил это, заменив time_24 на просто time везде. Спасибо за помощь, хотя!
3. @Daxon Я был бы признателен, если бы вы могли проголосовать и принять ответ 🙂
4. Да, нет проблем, приятель, я забыл это сделать, мой плохой.