Я работаю над Project euler, но это не относится к делу. Я пишу быстрый код для распечатки последовательности Фибоначчи. Я на самом деле имеют разный код для eueler уравнения проекта, но это, по сути, алгоритм я использую:Почему этот код работает только тогда, когда я использую 'x, y = y, x + y format вместо' 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. Я думаю, что если вы замените последние 2 строки в оригинале последней строкой в рабочей версии, обе версии w ould работает должным образом. –