列表和循环语法

问题描述 投票:0回答:5

所以我是初学程序员,我正在尝试构建一个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):

我不知道如何纠正它

python for-loop syntax
5个回答
1
投票

有趣的是,这不是语法错误的地方。前一行是问题所在:

   fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))

这一行缺少结束括号。在这种情况下会发生的情况是,由于括号没有关闭,Python解释器继续寻找更多的东西放在表达式中。它击中了下一行的for,一直持续到结肠前。此时,有一种方法可以继续仍然有效的代码。

然后,它击中了结肠。没有有效的Python语法允许在那里冒号,因此它会停止并在第一个令牌上引发错误,这个错误位于客观的错误位置。然而,就你的意图而言,我们可以看到错误实际上是早些时候发生的。

此外,如评论中所述,您的原始list被命名为fib_sequence,而在您的其余代码中您引用fib_list。这将提高NameError


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)

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

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]

0
投票

你有两个错误:

  1. fib_sequencefib_seqfibseq不一致。
  2. 你错过了第4行的)
© www.soinside.com 2019 - 2024. All rights reserved.