所以我是初学程序员,我正在尝试构建一个python程序来打印Fibonacci序列。我的代码如下:
fib_sequence = [0,1,1]
def fib_add(x):
fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2])
for n in range(2,10):
fib_add(n)
print(fib_seq)
程序说冒号上有一个语法错误
for n in range(2,10):
我不知道如何纠正它
有趣的是,这不是语法错误的地方。前一行是问题所在:
fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))
这一行缺少结束括号。在这种情况下会发生的情况是,由于括号没有关闭,Python解释器继续寻找更多的东西放在表达式中。它击中了下一行的for
,一直持续到结肠前。此时,有一种方法可以继续仍然有效的代码。
然后,它击中了结肠。没有有效的Python语法允许在那里冒号,因此它会停止并在第一个令牌上引发错误,这个错误位于客观的错误位置。然而,就你的意图而言,我们可以看到错误实际上是早些时候发生的。
此外,如评论中所述,您的原始list
被命名为fib_sequence
,而在您的其余代码中您引用fib_list
。这将提高NameError
。
你必须将你的for循环代码放在main中。另外,正如另一个答案所示,您必须在之后添加另一个括号
fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))
if __name__ == '__main__':
for n in range(2,10):
fib_add(n)
print(fib_seq)
虽然你有一些有用的答案,你可能会研究生成器,它们使Python
成为一种强大的语言:
def fibonacci():
x, y = 0, 1
while True:
yield x
x, y = y, x + y
for x in fibonacci():
if x >= 10:
break
print(x)
这打印
0
1
1
2
3
5
8
这是更正后的代码:
fib_seq = [0,1,1]
def fib_add(x):
fib_seq.insert(x, int(fib_seq[x-1]+fib_seq[x-2]))
for n in range(3,10):
fib_add(n)
print(fib_seq)
结果输出:
[0, 1, 1, 2]
[0, 1, 1, 2, 3]
[0, 1, 1, 2, 3, 5]
[0, 1, 1, 2, 3, 5, 8]
[0, 1, 1, 2, 3, 5, 8, 13]
[0, 1, 1, 2, 3, 5, 8, 13, 21]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
你有两个错误:
fib_sequence
,fib_seq
,fibseq
不一致。)