尽管 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) 添加到函数中。尝试比我更聪明并在使用它之前发布代码 ;)