Как вывести время текстом без использования списков?
программа время из минут переводит в часы и минуты, и пишет словами часы и минуты, к примеру 123 - 2 часа 3 минуты. Вопрос в том можно ли эти строчки кода написать как-то без списка
if strhours[:-3:-1] == number:
hours_word = 'часов'
Вот код программы
while True:
try:
time = int(input("Введите время в минутах: "))
hours = time // 60
minutes = time % 60
strhours = str(hours)
number = '11'
if strhours[:-3:-1] == number:
hours_word = 'часов'
elif hours % 10 == 1 and hours != 11:
hours_word = "час"
elif 2 <= hours % 10 <= 4 and (hours // 10) % 10 != 1:
hours_word = "часа"
else:
hours_word = "часов"
if minutes % 10 == 1 and minutes != 11:
minutes_word = "минута"
elif 2 <= minutes % 10 <= 4 and (minutes // 10) % 10 != 1:
minutes_word = "минуты"
else:
minutes_word = "минут"
print(f"{hours} {hours_word} {minutes} {minutes_word}\n")
except ValueError:
print("\nОШИБКА")
continue
Смысл в том, что числа которые оканчиваются на 11 и больше этих 11 он выводит неверно(ну то есть получается если единиц не 2, а 3 и более) , к примеру 660 м выведет верно, а 6660 м выведет 111 часа. P.S просто интересно без списка можно это сделать?
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Без использования списков можно так (в том числе range):
while True:
try:
time = int(input("Введите время в минутах: "))
hours = time // 60
minutes = time % 60
if hours == 1:
hours_word = 'час'
elif 11 <= hours <= 19:
hours_word = 'часов'
elif 2 <= hours % 10 <= 4:
hours_word = 'часа'
else:
hours_word = 'часов'
if 11 <= minutes <= 19:
minutes_word = 'минут'
elif minutes % 10 == 1:
minutes_word = 'минута'
elif 2 <= minutes % 10 <= 4:
minutes_word = 'минуты'
else:
minutes_word = 'минут'
print(f"{hours} {hours_word} {minutes} {minutes_word}\n")
except ValueError:
print("\nОШИБКА")
continue
Upd. :
Для проверки того, что в конце стоит 11 можно использовать
num % 100 == 11