Python, а l oop пропускается - PullRequest
       14

Python, а l oop пропускается

0 голосов
/ 07 августа 2020

Я пытаюсь сделать часы обратного отсчета, и когда я запускаю их в последний раз, l oop пропускается, а l oop полностью закрывается. В чем может быть проблема?

def countdown():
    print("Give the time for the countdown separated by a space.")
    time.sleep(0.3)
    print("If none just type in 00")
    hours_time = int(input("Hours:"))
    min_time = int(input("Minutes:"))
    sec_time = int(input("Seconds:"))
    print("Countdown will run for:{}Hr {}min {}sec".format(hours_time, min_time, sec_time))
    while (sec_time != 00):
        print("{}Hr {}min {}sec".format(hours_time, min_time, sec_time))
        time.sleep(1)
        sec_time = sec_time - 1
        while (min_time != 00 and sec_time == 00):
            print("{}Hr {}min 00sec".format(hours_time, min_time))
            time.sleep(1)
            min_time = min_time - 1
            sec_time = sec_time + 59
            while (hours_time != 00 and min_time == 00 and sec_time == 00):
                print("{}Hr 00min 00sec".format(hours_time))
                time.sleep(1)
                hours_time = hours_time - 1
                min_time = min_time + 59
                sec_time = sec_time + 59

countdown()

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Здесь используются строки формата, чтобы ваши значения времени имели ведущие нули:

seconds = (hours_time*60 + min_time)*60 + sec_time
while seconds != 0:
    m, s = divmod(seconds, 60)
    h, m = divmod(m, 60)
    print("{0:02d}Hr {1:02d}min {2:02d}sec".format(h,m,s))
    time.sleep(1)
    seconds = seconds - 1
1 голос
/ 07 августа 2020

Вам нужен только один while l oop. Уменьшайте секунды на 1 каждый раз, а если оно опускается ниже нуля, то соответственно корректируйте минуты, и аналогично для часов:

    while sec_time != 0 or min_time != 0 or hours_time != 0:
        print("{}Hr {}min {}sec".format(hours_time, min_time, sec_time))
        time.sleep(1)
        sec_time -= 1
        if sec_time < 0:
            sec_time += 60
            min_time -= 1
            if min_time < 0:
                min_time += 60
                hours_time -= 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...