不同的语法,不同的结果
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
消除了对临时变量的需要。
我正在尝试一个超简单的新手练习。 练习的 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
消除了对临时变量的需要。