首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lists和for循环语法

lists和for循环语法
EN

Stack Overflow用户
提问于 2019-03-22 13:31:36
回答 4查看 52关注 0票数 0

所以我是一个初级程序员,我正在尝试构建一个python程序来打印斐波那契数列。我的代码如下:

代码语言:javascript
复制
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)

上的冒号处有语法错误。

代码语言:javascript
复制
for n in range(2,10):

我不知道该怎么改正

EN

回答 4

Stack Overflow用户

发布于 2019-03-22 13:33:36

有趣的是,这并不是语法错误所在。问题出在前面那一行:

代码语言:javascript
复制
   fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))

此行缺少右括号。在这种情况下发生的情况是,由于括号没有闭合,Python解释器继续寻找更多内容放入表达式中。它命中下一行中的for,并一直持续到冒号之前。在这一点上,有一种方法可以继续执行仍然有效的代码。

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

此外,正如注释中所指出的,您的原始list名为fib_sequence,而在代码的其余部分中,您引用了fib_list。这将引发一个NameError

票数 1
EN

Stack Overflow用户

发布于 2019-03-22 13:36:53

你必须把你的for循环代码放在main里面。同样,正如另一个答案所建议的那样,您必须在

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-03-22 13:44:41

以下是更正后的代码:

代码语言:javascript
复制
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)

结果输出:

代码语言:javascript
复制
[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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55293424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档