在写斐波那契数列代码时,编程思路是:如果正确打印了斐波那契数列,就返回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