所以我是一个初学者,我正在尝试构建一个Python程序来打印斐波那契序列。 我的代码如下:
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):
我不知道如何纠正
答案 0 :(得分:1)
fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))
此行缺少右括号。在这种情况下发生的事情是,由于括号没有关闭,因此Python解释器继续寻找可放入表达式中的更多内容。它在下一行击中for
,并一直持续到冒号之前。此时,有一种方法可以继续执行仍然有效的代码。
然后,它击中了结肠。没有有效的Python语法允许在其中加一个冒号,因此它会停止并在第一个令牌上出现错误,该令牌客观上位于错误的位置。但是,就您的意图而言,我们可以看到该错误实际上是较早发生的。
此外,如注释中所述,原始list
被命名为fib_sequence
,而在其余代码中,您引用了fib_list
。这将引发一个NameError
。
答案 1 :(得分:0)
您必须将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)
答案 2 :(得分:0)
这是更正的代码:
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]
答案 3 :(得分:0)
尽管您有一些有用的答案,但您可以研究一下生成器,它们使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
答案 4 :(得分:0)
您有两个错误:
fib_sequence
,fib_seq
,fibseq
不一致。)