@Schenker

Задача про часы, почему решается именно так?

Здравствуйте. 2 день изучаю Питон и наткнулся на такую задачку:
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.
Вот решение
n = int(input())
hours = n % (60 * 24) // 60
minutes = n % 60
print(hours, minutes)


Можете мне объяснить самое решение, а то я не понимаю строчку hours = n % (60 * 24) // 60. Почему применяется деление с остатком, почему применяется деление без остатка?
  • Вопрос задан
  • 239 просмотров
Решения вопроса 2
HarisNvr
@HarisNvr
Начинающий кодер Python
60 * 24 — это общее количество минут в одном дне (24 часа по 60 минут).

n % (60 * 24) — это количество минут, оставшееся после деления на полное количество минут в одном дне. Это позволяет нам получить количество минут в пределах одного дня. Вдруг заданное кол-во минут будет больше одного дня, часы сделают полный оборот и встанут на 00:00.

// 60 — делит количество оставшихся минут на 60, чтобы получить количество часов. Здесь используется целочисленное деление, которое отбрасывает дробную часть.

minutes = n % 60 вычисляет количество минут, оставшихся после деления на 60. Это будет то количество минут в последнем (неполном) часе.
Ответ написан
Комментировать
hours = n % (60 * 24) // 60
minutes = n % 60


Допустим n = 2000 минут

1. 60 * 24 = 1440
— это общее количество минут в сутках. Работаем с минутами, т.к. твоё число "n" в минутах.

2. 2000 % 1440 = 560
Остаток от деления (%) твоего "n" на общее количества минут в сутках, так как суток может быть несколько, если число "n" велико.

3. 560 // 60 = 9
Оставшееся значение минут поделено целочисленным делением на 60 (//60), чтобы узнать значение для часов, поэтому сколько бы минут небыло, у тебя останется только целая часть - часы.

4. 2000 % 60 = 20
С минутами наоборот — часы нам не нужны, поэтому просто получаем остаток от деления на 60, сокращая часы. Остаются только минуты.

Время на часах 9:20
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы