24-часовое преобразование времени на 12-часовые часы (ProblemSetQuestion) на Python

Я начинающий программист в Python, и я не знаю, как продолжить следующий вопрос. Там есть тонна подобных вопросов, однако нет никакого отношения к коду Python.

Я попытался сравнить строки, но я не уверен, как сделать сравнение. Я уверен, что мне нужно взять первые два числа (часы) и разделить на 12, если их больше 12 … но это создает проблемы.

Вопрос:

Преобразование времени (от 24 часов до 12 часов)

Напишите функцию, которая позволит пользователю конвертировать 24-часовой формат времени в 12-часовой формат (с добавлением «am», «pm»). Пример: от «1400» до «2:00 pm». Все строки, переданные в качестве параметра, будут иметь длину 4 и будут содержать только цифры.

Примеры (тесты / вызовы):

>>> convertTime('0000') '12:00am' >>> convertTime('1337') '1:37pm' >>> convertTime('0429') '4:29am' >>> convertTime('2359') '11:59pm' >>> convertTime('1111') '11:11am' 

Любой вход или разные методы были бы замечательными!

2 Solutions collect form web for “24-часовое преобразование времени на 12-часовые часы (ProblemSetQuestion) на Python”

Вы можете использовать модуль datetime, но тогда вам также придется иметь дело с датами (вы можете вставить туда, где хотите). Наверное, проще просто разобрать его.


Обновление: поскольку @JonClements указали в комментариях к исходному вопросу, это можно сделать с помощью одного лайнера:

 from datetime import datetime def convertTime(s): print datetime.strptime(s, '%H%M').strftime('%I:%M%p').lower() 

Вы можете разделить входную строку в часах и минутах следующим образом:

 hours = input[0:2] minutes = input[2:4] 

Затем проанализируйте значения, чтобы получить целое число:

 hours = int(hours) minutes = int(minutes) 

Или, чтобы сделать это более питоническим способом:

 hours, minutes = int(input[0:2]), int(input[2:4]) 

Затем вам нужно решить, находится ли время утром ( hours от 0 до 11) или днем ​​( hours от 12 до 23). Также не забудьте обработать специальный случай за hours==0 :

 if hours > 12: afternoon = True hours -= 12 else: afternoon = False if hours == 0: # Special case hours = 12 

Теперь у вас есть все, что вам нужно, и что осталось – отформатировать и распечатать результат:

 print '{hours}:{minutes:02d}{postfix}'.format( hours=hours, minutes=minutes, postfix='pm' if afternoon else 'am' ) 

Оберните его функцией, возьмите несколько ярлыков, и у вас останется следующий результат:

 def convertTime(input): h, m = int(input[0:2]), int(input[2:4]) postfix = 'am' if h > 12: postfix = 'pm' h -= 12 print '{}:{:02d}{}'.format(h or 12, m, postfix) convertTime('0000') convertTime('1337') convertTime('0429') convertTime('2359') convertTime('1111') 

Результаты в:

 12:00am 1:37pm 4:29am 11:59pm 11:11am 

Некоторые подсказки int («2300») возвращают целое число 2300 2300 – это PM. время> = 1200 – время PM между 0000 и 1200 – это AM.

Вы можете сделать функцию, которая принимает строку, оценивает ее как целое, а затем проверяет, больше она или меньше указанных выше условий и возвращает печать.

  • Ошибка импорта Python: объект 'module' не имеет атрибута 'x'
  • Обновление Python 3.2 до Python 3.4 на Linux
  • Измерение времени, которое требуется для запуска и завершения функции в Python
  • Попытка воссоздать метод __str __ () в python
  • im пытается получить прокси с использованием python regex из веб-страницы
  • Keras: ImportError: нет модуля с именем data_utils
  • Matplotlib: укажите формат поплавков для тиков
  • Программа торгового автомата (подсчитайте сумму, которую необходимо вставить, и т. Д.)
  • Python - лучший язык программирования в мире.