我在Project euler上工作,雖然這不在話下。我正在編寫一個快速代碼來打印斐波那契序列。但事實上我對這個項目eueler方程不同的代碼,但是這基本上是我使用的算法:爲什麼只有當我使用'x,y = y,x + y格式而不是'x = y; y = x + y'?
x = 1
y = 0
while x < 4000000:
print x
x = y
y = x + y
這是erking我一段時間,這應該有工作。然後,我研究了一下,發現了幾乎相同的代碼,但格式有點不同。它的工作!唯一的區別是它將x和y的賦值放在一行中,用逗號分隔。所以我試了一下:
x , y = 1 , 0
while x < 4000000:
print x
x,y = y, x + y
顯然,正如我所說,它的工作。這真是困擾我,因爲我無法弄清楚除了聰明和在第二行使用較少的行之外,兩者之間的區別。我不明白爲什麼輸出不同。爲什麼輸出不同?
我在想同樣的事情,這將意味着最後一行評估爲y = 0 + 0.我認爲如果你用工作版本中的最後一行替換原來的最後兩行,兩個版本w將按預期工作。 – 2013-02-18 23:44:21