不同的语法,不同的结果

Different syntax, different result

我正在尝试一个超简单的新手练习。 练习的 objective 是创建斐波那契模式,我尝试了两种我认为会产生相同结果的方法。但是出于某种原因他们不这样做,我不明白为什么。

有什么想法吗?

代码 1

a = 0
b = 1

while b < 100: 
    print(b)
    a = b
    b = a + b

代码 2:

a, b = 0, 1

while b < 100:
    print(b)
    a, b = b, a + b

在 "CODE 1" 中,a = b 使下一行等同于 b = b + b,这是不正确的。

在"CODE 2"中,a,b=b,a+b本质上是new_a = old_b; new_b = old_a + old_b。新值是根据旧值计算得出的,然后将新值分配给变量。这会正确计算斐波那契数列。

要在 "CODE 1" 中正确执行此操作,需要一个临时变量:

t = a
a = b
b = t + b # use original a saved in t to compute b

a,b=b,a+b 消除了对临时变量的需要。