我想在Python 3.5中计算Fibonacci系列 如果我这样做:
a = 0
b = 1
while b < 100:
print(b)
a, b = b, a + b
我得到了正确的结果,但如果我这样做:
a = 0
b = 1
while b < 100:
print(b)
a = b
b = a + b
它根本不起作用。 这是为什么?
答案 0 :(得分:2)
当你这样做时
a = b
b = a + b
然后,a
的分配首先执行 ,然后分配到b
,但此时{{1}已经有了一个新值。实际上,这与
a
使用&#34;双重赋值&#34;,两个变量同时更新
a = b
b = b + b # now a is the same as b
这会将元组a, b = b, a + b
分配给元组(b, a + b)
,使用元组解包将值分发到(a, b)
和a
。你可以认为这大致相当于
b
答案 1 :(得分:0)
在第一次迭代中,a的值更改为1,其计算b的方式与第二次中的方式不同,其中a + b = 2.在第一个示例中,a + b = 1.至少,这是&#39; s它对我来说是什么样的。
答案 2 :(得分:0)
首先,在第一次运行期间循环内部,
a, b = 1, 0+1
将a和b引导为1和1
在第二个例子中,
a = 1
b = 1 + 1
将a和b引导为1和2
不同之处在于,在第二个实例中,您使用已更新的a值更新b的值。而在第一个实例中,您使用旧的值来更新b的值。