尽管 try/except 斐波那契序列停止内核
Fibonacci sequence stops kernel despite try/except
我应该在找到 fibonacci(n) 的值时使用 try/except 块:
def fibonacci(n):
try:
if n==0:
return 0
elif n==1 or n==2:
return 1
except ValueError:
print("Input must be non-negative")
return fibonacci(n-1) + fibonacci(n-2)
n=int(input("Enter the value of n: "))
print(fibonacci(n))
除了 except
块本身,这里一切正常。每当我输入 运行 代码时,其他所有内容都正确显示输出,但在例外情况下,我的意思是,如果我输入负值,内核就会停止工作,这表明内核已死。我对这里出了什么问题感到有点困惑。
首先,您的 return 超出了 try/except
,这就是为什么您的 kernel stops working
,无论您输入什么内容,它 return 都是如此。正如您在评论中所说,您需要处理意外输入。首先,您需要先验证您的输入,然后再让 Fibonacci 函数使用它。希望对您有所帮助。
from typing import Any
def fibonacci(n: Any) -> Any:
try:
n = int(n)
if n >= 0:
if n==0:
return 0
elif n==1 or n==2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
else:
return "Input must be non-negative"
except ValueError:
return "Wrong type of input."
n = input("Enter the value of n: ")
print(fibonacci(n))
希望这就是您要找的。应该使用 Union
作为 return 类型提示。
对不起,我的错,不得不将 n = int(n)
添加到函数中。尝试比我更聪明并在使用它之前发布代码 ;)
我应该在找到 fibonacci(n) 的值时使用 try/except 块:
def fibonacci(n):
try:
if n==0:
return 0
elif n==1 or n==2:
return 1
except ValueError:
print("Input must be non-negative")
return fibonacci(n-1) + fibonacci(n-2)
n=int(input("Enter the value of n: "))
print(fibonacci(n))
除了 except
块本身,这里一切正常。每当我输入 运行 代码时,其他所有内容都正确显示输出,但在例外情况下,我的意思是,如果我输入负值,内核就会停止工作,这表明内核已死。我对这里出了什么问题感到有点困惑。
首先,您的 return 超出了 try/except
,这就是为什么您的 kernel stops working
,无论您输入什么内容,它 return 都是如此。正如您在评论中所说,您需要处理意外输入。首先,您需要先验证您的输入,然后再让 Fibonacci 函数使用它。希望对您有所帮助。
from typing import Any
def fibonacci(n: Any) -> Any:
try:
n = int(n)
if n >= 0:
if n==0:
return 0
elif n==1 or n==2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
else:
return "Input must be non-negative"
except ValueError:
return "Wrong type of input."
n = input("Enter the value of n: ")
print(fibonacci(n))
希望这就是您要找的。应该使用 Union
作为 return 类型提示。
对不起,我的错,不得不将 n = int(n)
添加到函数中。尝试比我更聪明并在使用它之前发布代码 ;)