为什么我的函数定义读取一个数字,就好像它是负数一样?
Why does my definition for function read a number as if it is negative?
我在定义函数时遇到代码问题。当给出一个输入数字(由 n 定义)时,我希望我的代码定义这个数字的斐波那契数列。然而,即使数字 n 是正数,fibo 函数仍然读取该数字,因为它是负数并打印 'None'。为什么要这样做?请在下面找到我的代码:
def fibo(x):
if x > 0:
if x <= 1:
return x
else:
return(fibo(x-1) + fibo(x-2))
elif x < 0:
return None
n = int(input())
for i in range(n):
print(fibo(i))
我认为您实际上在这里看到了一些不同的东西。如果你的函数的参数是 0 会发生什么?在这种情况下,if/elif 的两个分支都不会执行,因为零既不大于也不小于零。这样做的效果是函数在没有执行 return 语句的情况下完成,这是 None 的来源。
要解决此问题,请将 if 语句中的第一个条件更改为阅读
if x >= 0:
请注意,由于 Python 隐含地运行 return None 如果您没有明确地 return 任何东西,您实际上不需要这里的 elif。你明白为什么了吗?
希望对您有所帮助!
我在定义函数时遇到代码问题。当给出一个输入数字(由 n 定义)时,我希望我的代码定义这个数字的斐波那契数列。然而,即使数字 n 是正数,fibo 函数仍然读取该数字,因为它是负数并打印 'None'。为什么要这样做?请在下面找到我的代码:
def fibo(x):
if x > 0:
if x <= 1:
return x
else:
return(fibo(x-1) + fibo(x-2))
elif x < 0:
return None
n = int(input())
for i in range(n):
print(fibo(i))
我认为您实际上在这里看到了一些不同的东西。如果你的函数的参数是 0 会发生什么?在这种情况下,if/elif 的两个分支都不会执行,因为零既不大于也不小于零。这样做的效果是函数在没有执行 return 语句的情况下完成,这是 None 的来源。
要解决此问题,请将 if 语句中的第一个条件更改为阅读
if x >= 0:
请注意,由于 Python 隐含地运行 return None 如果您没有明确地 return 任何东西,您实际上不需要这里的 elif。你明白为什么了吗?
希望对您有所帮助!