2015-07-19 47 views
-1

我對如何一個問題「」對你會是N \出現在Python 3 +值安排

#There is technically a "\n" in between this two values (BA & BB) 
BA=6 
BB=90 

,但不應將其理解同樣是因爲這?

BA,BB = 6,90 

正確嗎?我問這個的原因是因爲這個while循環是在解釋它。

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

是不一樣的:

a=0 
b=1  
while b <10: 
    print(b) 
    a=b 
    b = a+b 

第一while循環給了我一個斐波那契數輸出,但第二while循環給了我一個重複。 第二次while循環的輸出:

1 
2 
4 
8 
4 

有人可以解釋一下嗎?

+0

如果你想知道具體細節,我指您['dis'](https://docs.python.org/2/library/dis.html),但不,它們不一樣。第一個變體相當於'(a,b)=(b,a + b)'。第二個,將'a'設置爲'b',然後嘗試將'a'(現在是'b')添加到'b' – NightShadeQueen

回答

0

這是因爲ab的值在聲明中,這意味着你可以在b值傳遞給a成爲a+b前的最後更新。

在第一循環中,會出現以下情況:

1 a becomes b=1 & b becomes a+b=0+1=1 
2 a becomes b=1 & b becomes a+b=1+1=2 
3 a becomes b=2 & b becomes a+b=1+2=3 
4 a becomes b=3 & b becomes a+b=2+3=5 

然而,在第二循環中,這些事件是分開的,所以:

1 a becomes b=1 
    b becomes a+b=1+1=2 
2 a becomes b=2 
    b becomes a+b=2+2=4 
3 a becomes b=4 
    b becomes a+b=4+4=8 

正如你可以看到,在每次迭代的第二個循環,你實際上只是將價值加倍了b。如果你想避免設置在同一條線上兩個變量,你需要定義一個變量3,這等於a舊值:如您所願

a=0 
b=1  
while b <100: 
    print(b) 
    old_a = a; 
    a=b 
    b = old_a+b 

這個循環將正常工作。