天天看點

python運作出現SyntaxError: 'return' outside function的原因和解決辦法

在寫斐波那契數列代碼時,程式設計思路是:如果正确列印了斐波那契數列,就傳回0結束程式;如果輸入有錯,就繼續重複執行輸入,直到正确為止。

fibo = [0,1]

while True:
    try:
        times = int(input("請輸入斐波那契數列的長度:"))
        if times == 1:
            print(fibo[0:1])
            return 0
        elif times >= 2:
            for ii in range(2,times):
                fibo.append(fibo[ii-2]+fibo[ii-1])
            print(fibo)
            return 0
        
    except ValueError:
        continue
           

但是,在編譯的時候報錯

SyntaxError: 'return' outside function

File "C:/Users/xiaokai/Documents/GitHub/leetcode-sorting/Solutions/debug.py", line 8
    return 0
    ^
SyntaxError: 'return' outside function

Process finished with exit code 1
           

原因是

return

關鍵字隻能在

def

自定義函數裡面使用,在

while

循環中隻能使用

break

關鍵字來結束循環!這裡沒有自定義函數,是以不能出現

return

這樣的關鍵字!

參考:Python return statement error " ‘return’ outside function" - Stack Overflow

是以把

return 0

全部改為

break

,修改之後程式如下:

fibo = [0,1]

while True:
    try:
        times = int(input("請輸入斐波那契數列的長度:"))
        if times == 1:
            print(fibo[0:1])
            # return 0
            break
        elif times >= 2:
            for ii in range(2,times):
                fibo.append(fibo[ii-2]+fibo[ii-1])
            print(fibo)
            # return 0
            break
    except ValueError:
        continue
           

編譯成功,運作效果:

請輸入斐波那契數列的長度:abcd
請輸入斐波那契數列的長度:-9
請輸入斐波那契數列的長度:10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Process finished with exit code 0