[英]Why do I get different results with these two sets of Python Code
我正在浏览 python 3.7 文档,我看到了我尝试过的这个示例代码,并得到了以下结果。
>>> # Fibonacci series:
... # the sum of two elements defines the next
... a, b = 0, 1
>>> while a < 10:
... print(a)
... a, b = b, a+b
...
0
1
1
2
3
5
8
然后我尝试以不同的方式重写代码,希望产生相同的结果。 但是我尝试了以下并得到了不同的结果。 请问这个和上面的有什么区别,为什么结果不同。
>>>a, b = 0, 1
>>>while a < 10:
print(a)
a = b
b = a + b
0
1
2
4
8
a, b = b, a + b
相当于
temp = b, a + b
a = temp[0]
b = temp[1]
请注意,这不会在评估=
右侧的值的同时执行对变量的赋值。 右侧的所有内容在执行任何作业之前都会进行评估。
在您的版本中,计算a + b
是在分配a = b
之后完成的。 但是为了得到正确的答案,你需要在那个加法中使用a
的旧值,而不是更新后的值。
如果你想按顺序写,你可以这样做
next_b = a + b
a = b
b = next_b
或者
old_a = a
a = b
b = old_a + b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.