列表和for循环语法

时间:2019-03-22 05:31:36

标签: python for-loop syntax

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

我不知道如何纠正

5 个答案:

答案 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)

您有两个错误:

  1. fib_sequencefib_seqfibseq不一致。
  2. 您在第4行中错过了一个)