Как вывести время текстом без использования списков?

Рейтинг: 0Ответов: 1Опубликовано: 28.05.2023

программа время из минут переводит в часы и минуты, и пишет словами часы и минуты, к примеру 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 просто интересно без списка можно это сделать?

Ответы

▲ 0Принят

Без использования списков можно так (в том числе 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