Цикл, который я пытался сделать, не будет правильно - PullRequest
0 голосов
/ 26 ноября 2018

Я пытался создать таймер, создав функцию, которая должна продолжаться до тех пор, пока она не достигнет 0. Я думал, что смогу запустить его, но я думаю, что в итоге пропустил первую часть остального
"(int (time) - int (1)) "и просто повторяя вторую цифру, которую он получил после - 1. Что я хочу, чтобы она делала: Возьмите всю функцию и выполните ее, пока она не достигнет 0. Что он делает: занимает время -1 и продолжает печатать, пока не достигнет максимальной глубины рекурсии.

import time as tm

def Timer(time):
    if time == '0':
        print("done")
        tm.sleep(3)
    else:
        print(int(time) - int(1))
        Timer(time)
Timer(time)

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Попробуйте это

def Timer(time):
    for i in range(time,0, -1):
        print(time -1)
    print("done")


Timer(10)

Если вам действительно нужен таймер, посмотрите на время импорта и используйте time.sleep (10)

from time import time
def Timer(time):
    for i in range(time,0, -1):
        time.sleep(1)
        print(time - 1)
    print("done")


Timer(10)
0 голосов
/ 26 ноября 2018

Я сделал несколько небольших изменений в вашем коде.Хотя это очень похоже, я исправил отсутствующий параметр и удалил все преобразования типов переменных, так как это не казалось необходимым.Вот что я создал (конечно, вам, возможно, придется адаптировать вызов функции и, возможно, удалить мой ввод):

import time as tm

def Timer(time):

    while (time>0):

        tm.sleep(1)
        time -= 1
        print(time)

    print("done")
    tm.sleep(3)

time=int(input('Choose your time value: '))
Timer(time)
0 голосов
/ 26 ноября 2018

Предполагая, что время не является глобальным, вам нужно передать время в качестве входных данных для вашей функции и соответствующим образом изменить его, чтобы в конечном итоге вы достигли рекурсивного базового случая time == '0'.В настоящее время вы просто вызываете Timer() снова и снова без изменения времени, поэтому вы будете продолжать рекурсивно вызывать Timer(), пока не достигнете максимальной глубины рекурсии, как вы указали (печать измененного времени фактически не меняет время).

import time as tm

def Timer(time):
    if time == '0':
        print("done")
    else:
        print(int(time) - 1)
        tm.sleep(1)
        time = str(int(time) - 1)
        Timer(time)
Timer('4')
...