语法错误:“无法分配给运算符”Python

时间:2017-02-04 15:55:41

标签: python

a, b, c = 0, 1,0
while c < 1000000:
    print (b)
    a, b = b, a + b, c = c + b

解释器抛出“无法分配给操作员”错误。 Ninja IDE强调变量初始化是问题所在。但是,当我在解释器中运行代码时,“a + b”会突出显示为问题部分。你能帮我辨认一下我的问题吗?

4 个答案:

答案 0 :(得分:2)

当您编写a, b, c = 0, 1, 0时,您不会创建多个分配。相反,您隐式使用元组打包解压缩。在行a, b = b, a + b, c = c + b中,您尝试执行相同的操作,但是赋值的右侧部分包含另一个赋值,该赋值无效(在python中,赋值不是表达式)。如果你想把它写成一行,你应该写

a, b, c = b, a + b, a + b + c

但是,由于c的值依赖于b的值已经改变,将它分成两行可能更清楚

a, b = b, a + b
c = c + b

答案 1 :(得分:1)

a, b, c = 0, 1,0的工作原理类似......

这一行试图将a和b分配给equals的右侧。你在那里有三件事,其中一件是变量赋值操作

a, b = b, a + b, c = c + b

也许你的意思是

a, b,c = b, a + b, c + b

或者,当然,只需在多行上进行

答案 2 :(得分:0)

这是一个简单的修复: 更改代码中c = c + b的位置。

a, b, c = 0, 1,0
while c < 1000000:
    print (b)
    a, b, c = b, a + b, c + b

它正在做的是:

a = b
b = a+b
c = c+b

但你可以分开编写。

希望有所帮助

答案 3 :(得分:0)

“=”符号之前的变量将被解释为您要存储的变量。 “=”符号后面的数据将被解释为您要存储在刚刚在相同位置左侧创建的变量中的数据。

示例:

a,b = 5,10
print(a)
#Outputs 5
print(b)
#Outputs 10

由于在“=”符号之前只有两个变量,因此在“=”符号之后输入的数据只有两个容器,即“+”符号,即a + b