Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在第一次迭代中仅在递归Python函数中打印一次语句?_Python_Function_Recursion - Fatal编程技术网

如何在第一次迭代中仅在递归Python函数中打印一次语句?

如何在第一次迭代中仅在递归Python函数中打印一次语句?,python,function,recursion,Python,Function,Recursion,我需要编写一个函数,将计时器打印为输出(同时打印所有内容)。但是,我需要在开头写上“准备好了吗?”,所以我只希望打印一次 以下是我目前掌握的情况: def factorial(i): while i > 0: print(i) return (factorial(i-1)) print('Go!') factorial(5) 我想让函数像这样打印输出: Ready? 5 4 3 2 1 Go! 您可以使用: 可以向函数中添加参数

我需要编写一个函数,将计时器打印为输出(同时打印所有内容)。但是,我需要在开头写上“准备好了吗?”,所以我只希望打印一次

以下是我目前掌握的情况:

def factorial(i):
    while i > 0:
        print(i)
        return (factorial(i-1))
    print('Go!')

factorial(5)
我想让函数像这样打印输出:

Ready?    
5
4
3
2
1
Go!
您可以使用:


可以向函数中添加参数

FIRST_TIME = True
NOT_FIRST_TIME = False


def factorial(i, is_first_time):
    if is_first_time:
        print('Ready?')
    if i:
        print(i)
        return (factorial(i-1, NOT_FIRST_TIME))
    print('Go!')


factorial(5, FIRST_TIME)

另外,
while
在逻辑上应该是
if
。它之所以有效,是因为您总是从中返回
,但它没有多大意义。@HampusLarsson这是一个递归函数,没有任何区别……请重构您的代码。因此您的缩进是错误的,在Python中它很重要,所以您应该修复它。无论如何,为什么这个函数称为
阶乘
?它只是从一个初始参数开始倒计时。您可以只使用一个标志,并在打印后将其设置为false。
FIRST_TIME = True
NOT_FIRST_TIME = False


def factorial(i, is_first_time):
    if is_first_time:
        print('Ready?')
    if i:
        print(i)
        return (factorial(i-1, NOT_FIRST_TIME))
    print('Go!')


factorial(5, FIRST_TIME)