- Преобразование времени в часы, минуты и секунды в Python
- Создание пользовательской функции
- 1. Как получить значение часа?
- 2. Как получить значение минуты?
- 3. Как получить значение секунд?
- 4. Полный код
- Использование модуля времени
- Использование модуля Datetime
- Заключение
- Лёгкая задача про часы
- Задача про электронные часы
Преобразование времени в часы, минуты и секунды в Python
В этом уроке мы будем говорить о времени. Рассмотрим различные способы преобразования времени в секундах во время в часах, минутах и секундах.
Двигаясь вперед, мы будем называть время в часах, минутах и секундах предпочтительным форматом.
Давайте потратим немного «времени» и подумаем о проблеме. Несомненно, у python есть удивительные модули, которые могут сделать преобразование за нас. Но давайте сначала попробуем написать нашу собственную программу, прежде чем мы перейдем к встроенным модулям.
Создание пользовательской функции
Чтобы написать нашу собственную функцию преобразования, нам сначала нужно подумать о проблеме математически.
Как перевести секунды в предпочтительный формат? Вам нужно получить значение часов, минут и секунд.
Предположим, что время в секундах не превышает общего количества секунд в сутках. Если это так, мы разделим его на общее количество секунд в день и возьмем остаток.
Математически это представлено как:
seconds = seconds % (24 * 3600)
24 * 3600, поскольку в одном часе 3600 секунд (60 * 60), а в одном дне 24 часа.
После этого мы можем продолжить и вычислить значение часа из секунд.
1. Как получить значение часа?
Чтобы получить значение часа из секунд, мы будем использовать оператор деления (//). Он возвращает целую часть частного.
Поскольку нам нужно количество часов, мы разделим общее количество секунд (n) на общее количество секунд в часе (3600).
Математически это представлено как:
После этого нам нужно посчитать минуты.
2. Как получить значение минуты?
Чтобы вычислить значение минут, нам нужно сначала разделить общее количество секунд на 3600 и взять остаток.
Математически это представлено как:
Теперь, чтобы вычислить значение минут из приведенного выше результата, мы снова будем использовать оператор floor.
В минуте шестьдесят секунд, поэтому мы уменьшаем значение секунд до 60.
После вычисления значения минут мы можем перейти к вычислению значения секунд для нашего предпочтительного формата.
3. Как получить значение секунд?
Чтобы получить значение секунд, нам снова нужно разделить общее количество секунд на количество секунд в одной минуте (60) и взять остаток.
Математически это делается следующим образом:
Это даст второе значение, которое нам нужно для нашего предпочтительного формата.
4. Полный код
Давайте скомпилируем вышеупомянутые знания в функции Python.
def convert_to_preferred_format(sec): sec = sec % (24 * 3600) hour = sec // 3600 sec %= 3600 min = sec // 60 sec %= 60 print("seconds value in hours:",hour) print("seconds value in minutes:",min) return "%02d:%02d:%02d" % (hour, min, sec) n = 10000 print("Time in preferred format :-",convert(n))
seconds value in hours: 2 seconds value in minutes: 46 Time in preferred format :- 02:46:40
Использование модуля времени
Теперь давайте посмотрим на встроенный модуль, который позволяет нам конвертировать секунды в наш предпочтительный формат в одной строке кода.
Модуль времени определяет эпоху как 1 января 1970 года, 00:00:00 (UTC) в системах Unix (зависит от системы). Эпоха – это, по сути, начало времени для компьютера. Думайте об этом как о floor 0. Всякий раз, когда мы конвертируем секунды с помощью модуля времени, эта эпоха используется как точка отсчета.
Чтобы вывести эпоху в вашей системе, используйте следующую строку кода:
Чтобы преобразовать секунды в предпочтительный формат, используйте следующую строку кода:
time.strftime("%H:%M:%S", time.gmtime(n))
Эта строка принимает время в секундах как «n», а затем позволяет отдельно выводить часы, минуты и секунды.
Полный код Python выглядит следующим образом:
import time n=10000 time_format = time.strftime("%H:%M:%S", time.gmtime(n)) print("Time in preferred format :-",time_format)
Time in preferred format :- 02:46:40
Модуль времени также дает вам возможность отображать дополнительную информацию, такую как день, месяц и год.
% а | Отображать сокращенное название дня недели. |
% А | Отображать полное название дня недели. |
% b | Отображать сокращенное название месяца. |
% B | Отображать полное название месяца. |
% c | Отобразить соответствующее представление даты и времени. |
% d | Отображать день месяца как десятичное число [01,31]. |
Попробуем использовать% a и % b.
import time n=100000000000 time_format = time.strftime("Day: %a, Time: %H:%M:%S, Month: %b", time.gmtime(n)) print("Time in preferred format :-",time_format)
Time in preferred format :- Day: Wed, Time: 09:46:40, Month: Nov
Использование модуля Datetime
Вы также можете использовать метод timedelta в модуле DateTime для преобразования секунд в предпочтительный формат.
Он отображает время в днях, часах, минутах и секундах, прошедших с эпохи.
Код Python для преобразования секунд в предпочтительный формат с использованием модуля Datetime выглядит следующим образом:
import datetime n= 10000000 time_format = str(datetime.timedelta(seconds = n)) print("Time in preferred format :-",time_format)
Time in preferred format :- 115 days, 17:46:40
Заключение
В этом руководстве были рассмотрены три различных способа преобразования секунд в часы, минуты и секунды. В целом есть два разных способа решения проблемы.
Вы либо пишете свою собственную функцию, либо используете встроенный модуль. Мы начали с написания нашей собственной функции, а затем посмотрели на модуль времени и DateTime.
Лёгкая задача про часы
Добрый день! Решаю задачу на Pythontutor. Столкнулся с проблемой:
С начала суток часовая стрелка повернулась на угол в α градусов. Определите сколько полных часов, минут и секунд прошло с начала суток, то есть решите задачу, обратную задаче «Часы — 1». Запишите ответ в три переменные и выведите их на экран.
alpha = float(input()) hour = 30 minute = hour/60 second = minute/60 h = alpha//hour m = (alpha / 30 * 60) % 60 s = (alpha / 30 * 3600) % 60 print(h, m, s)
Почему не работает, кто поможет?
Задача про электронные часы
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать.
Очень лёгкая задача
Очень легкая задача Сегодня утром жюри решило добавить в вариант олимпиады еще одну, Очень Легкую.
Легкая задача, в чем ошибка?
a=input("введите букву") t=0 b=input("введите слово") for i in b: if i == a: .
Задача про электронные часы
Электронные часы показывают время в формате h:mm:ss, то есть сначала записывается количество часов.
m = (alpha % hour) // minute s = (alpha % hour ) % minute // second
alpha = float(input()) hour = 30 minute = hour/60 second = minute/60 h = (alpha//hour)%60 m = (alpha // minute) % 60 s = (alpha // second) % 60 print(h, m, s)
angle = float(input()) print(int(angle // 30), int(angle % 30 * 2), int(angle % 0.5 * 120),sep=' ',end='')
alpha = float(input()) hour = 30 minute = hour/60 second = minute/60 h = alpha//hour m = alpha % 30 * 2 s = alpha % 0.5*120 print(int(h), int(m), int(s))
Всем привет! Решила начать изучение Python и у меня появились вопросы. Не хочу создавать новую тему, т.к. нашла эту. Собственно та же задача, но немного другой код. Все ответы совпадают (на питон тьютор), кроме одного. Никак не пойму, что не так! Помогите начинающему
z = float(input()) a = z/30 b = (a-int(a))*60 c = (b-int(b))*60 print(int(a%60), int(b), int(c))
Сообщение от alyonaangel
точнотак?
может // ?
и с форматированием нужно разобраться
между знаками + — / // % *
нужно ставить один пробел
в других случаях тоже, один пробел
z = float(input()) a = z // 30 b = (a - int(a)) * 60 c = (b - int(b)) * 60 print( int(a % 60), int(b), int(c) )
IRIP, это дело вкуса, для кого-то пробелы между аргументами функции и скобками тоже странными кажутся. 😉
Сообщение от ioprst
этому приему обучают на курсах в сети
для «начальных классов»
в будущем, понятно, этого делать не нужно
Рекомендуется, например, ставить отступы после запятой, после + — // % / * =
также, в случае комментирования строки
рекомендуется ставить решетку # так:
Сообщение от IRIP
точнотак?
может // ?
и с форматированием нужно разобраться
между знаками + — / // % *
нужно ставить один пробел
в других случаях тоже, один пробел
Спасибо за советы, буду приучать себя к правильному стилю форматирования.
Попробовала поменять «/» на «//», но получилось только хуже. На данный момент только один ответ не совпадает:
Вот еще одна задача, которая имеет почти правильное решение. Разница буквально в сотых-тысячных и я не пойму, что не так. В принципе, как и в предыдущем случае.
Задача: Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада. Вклад составляет X рублей Y копеек. Определите размер вклада через год.
Программа получает на вход целые числа P, X, Y и должна вывести два числа: величину вклада через год в рублях и копейках. Дробная часть копеек отбрасывается.
p = int(input()) x = int(input()) y = int(input()) z = x + y / 100 n = z * p / 100 a = int((n + z)) b = round((n + z - a), 2) * 100 print(a, int(b))
Практически все правильно, но вот, например, со следующими исходящими данными:
p = 1
x = 1
y = 99
Учебник считает правильным ответ «2 0», а у меня получается «2 1».
Что же не так?
Сообщение от alyonaangel
потому что b у вас == 1
а в правильном ответе == 0
Добавлено через 1 минуту
и в python3 не применяют (почти) деление одной косой
в основном это //
или
Сообщение от Zodt
angle = float(input()) print(int(angle // 30), int(angle % 30 * 2), int(angle % 0.5 * 120),sep=' ',end='')
alpha = float(input()) hour = 30 minute = hour/60 second = minute/60 h = alpha//hour m = alpha % 30 * 2 s = alpha % 0.5*120 print(int(h), int(m), int(s))
Объясните, пожалуйста, откуда взялась такая формула для минут и секунд, почему остаток от деления в минутах на 30 ? Почему в секундах остаток от 0.5 и почему надо умножать на 120? Вникнуть никак не могу.
Сообщение от Sega96
За час часовая стрелка поворачивается на 360 / 12 = 30 градусов, а минутная за час делает полный оборот.
Сообщение от Sega96
За минуту часовая стрелка поворачивается на 30 / 60 = 0.5 градуса, а секундная за это время делает полный оборот.
Сообщение от Sega96
Легкая задача со строками
Превратите список в грамматически правильное предложение. Каждое слово должно отделяться.
Легкая задача! нужно лишь попровить код
Во вложении есть само задание, нужно сделать так, чтобы буквы не зависели друг от друга
Задача 2. Старинные часы
Задача 2. Старинные часы. Старинные часы бьют каждые 15 минут. В начале каждого часа они бьют.
Задача про часы
Тут есть вот такая интересная задачка: Есть некое понятие времени, в котором в сутках N часов. И.
Интересная задача про часы
Помогите определить время, которое покажут часы, после того, как они K раз окажутся на одной.
Задача про рабочие часы
Код не работает, в чем ошибка? На первый тест выводит 127:02 Иван Иванович – очень.
Задача про электронные часы
Электронные часы показывают время в формате h:mm:ss, то есть сначала записывается количество часов, потом обязательно двузначное количество минут, затем обязательно двузначное количество секунд. Количество минут и секунд при необходимости дополняются до двузначного числа нулями.
С начала суток прошло n секунд. Выведите, что покажут часы.
________________________________________________________________________________ _______
подскажите новичку его ошибку, пожалуйста, мое решение:
________________________________________________________________________________ ________
n = int(input()) if n86400: print (n//3600) print (n//60) print (n%60) else: print ((n % 86400) // 3600) print ((n % 86400) // 60) print ((n % 86400) % 60)
Задача 2. Старинные часы
Задача 2. Старинные часы. Старинные часы бьют каждые 15 минут. В начале каждого часа они бьют.
Задача про электронные часы
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать.
Лёгкая задача про часы
Добрый день! Решаю задачу на Pythontutor. Столкнулся с проблемой: С начала суток часовая стрелка.
Электронные часы
Электронные часы показывают время в формате h:mm:ss, то есть сначала записывается количество часов.
Электронные часы
Часы показывают h часов, m минут и s секунд. Выведите на зкран, какое время будут показывать.