我尝试制作的循环无法正确循环

时间:2018-11-26 19:44:36

标签: python python-3.x loops numbers countdowntimer

我试图通过创建一个函数来使它一直运行直到它达到0。我以为可以循环使用它,但是我认为它最终跳过了else的第一部分。
 “(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 :(得分:2)

假设时间不是全局时间,则需要将时间作为输入传递到函数中,并进行相应的修改,以便最终达到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')

答案 1 :(得分:2)

尝试

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)

答案 2 :(得分:0)

我对您的代码做了一些小的改动。虽然非常相似,但由于似乎没有必要,所以我修复了丢失的参数并删除了所有变量类型的转换。这是我创建的(当然,您可能必须调整函数调用并可能删除我的输入):

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)