2016-08-22 62 views

回答

4

首先,第一个代码片段中存在缩进错误。最后两行应该缩进,以便在while循环内执行。

print ('Fibonacci series...') 
a,b = 0,1 
while b<50: 
print(b) 
a = b 
b = a+b 

但是,这仍然不会产生正确的结果。让我们看看为什么这两个代码片段是不同的。

  1. a, b = b, a + b:这将分配给abba + b,用右手边的左侧前的评估。这意味着在查看要赋予新值的变量之前,Python将首先看到什么是ba + b。这意味着a的旧值将用于设置b = a + b。你可以阅读更多关于这个here

    a = 1 
    b = 2 
    a, b = b, a + b # set a to 2, set b to 1 + 2 
    print(a) # 2 
    print(b) # 3 
    
  2. a = b; b = a + b:这确实分配顺序,使得a首先设置为b,然后在分配计算中使用。

    a = 1 
    b = 2 
    a = b # set a to 2 
    b = a + b # set b to 2 + 2 
    print(a) # 2 
    print(b) # 4 
    
2
a=b 
b = a+b 

在第一个代码示例中相当于b = b * 2。相反,你想要b += original_value(a)。所以,你要么需要做的元组分配,作为第二个代码示例(a,b = b, a+b)中,或使用一个临时变量:

temp = a 
a = b 
b += temp 

以获得所需的价值变化。