所以我是一个初级程序员,我正在尝试构建一个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):我不知道该怎么改正
发布于 2019-03-22 13:33:36
有趣的是,这并不是语法错误所在。问题出在前面那一行:
fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))此行缺少右括号。在这种情况下发生的情况是,由于括号没有闭合,Python解释器继续寻找更多内容放入表达式中。它命中下一行中的for,并一直持续到冒号之前。在这一点上,有一种方法可以继续执行仍然有效的代码。
然后,它击中了冒号。没有允许冒号的有效Python语法,因此它会在第一个令牌处停止并在客观上错误的位置引发错误。然而,就您的意图而言,我们可以看到这个错误实际上是在早些时候犯的。
此外,正如注释中所指出的,您的原始list名为fib_sequence,而在代码的其余部分中,您引用了fib_list。这将引发一个NameError。
发布于 2019-03-22 13:36:53
你必须把你的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)发布于 2019-03-22 13:44:41
以下是更正后的代码:
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]https://stackoverflow.com/questions/55293424
复制相似问题