在寫斐波那契數列代碼時,程式設計思路是:如果正确列印了斐波那契數列,就傳回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