2017-02-04 25 views
-1
a, b, c = 0, 1,0 
while c < 1000000: 
    print (b) 
    a, b = b, a + b, c = c + b 

解釋器拋出「不能分配給操作符」錯誤。忍者IDE強調變量初始化是問題。但是,當我在解釋器中運行代碼時,「a + b」突出顯示爲問題部分。你能幫我確定我遇到的問題嗎?語法錯誤:「不能分配給操作符」Python

+4

停止在一行中做事。如果你打破了逗號,你會看到問題 –

+1

你不能把你的陳述放在幾行上嗎? –

+3

這個令人困惑的代碼應該做什麼? –

回答

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

如何a, b, c = 0, 1,0作品類似...

該行正試圖指派A和B等號的右邊。你那邊有三樣東西,而那些之一是變量賦值操作

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

也許你的意思是這不是

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

或者,當然了,只是做了多條線路

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 

但是你可以在單獨的行寫。

希望幫助

0

變量前的「=」號將被解釋爲是你要存儲的變量。 「=」符號後面的數據將被解釋爲您要存儲在剛纔在相同位置左側創建的變量中的數據。

實施例:

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

因爲只在「=」符號之前有兩個變量,將僅存在兩個用於你後只需輸入數據容器中的「=」符號是b和a + b

相關問題