2012-04-13 238 views
0

出於某種原因,此代碼不會打印任何內容並且不會停止運行,有人可以告訴我這裏出了什麼問題嗎?while循環代碼保持運行

l = [1,2] 
i = 0 
k = l[i]+l[i+1] 
while k <= 10: 
    l.append(k) 
    i += 1 

print l 
+8

你不修改while循環'k'。 – 2012-04-13 22:44:46

回答

3

k(並且因此循環條件)的值在循環之前使用的i(0)的當前值設置,並且循環執行期間不會改變。您將不得不根據循環內的i的新值重新分配k,以便更改它。

0

您沒有對k變量進行任何更改。一旦計算出K的值,代碼就會在while循環中獲得庫存,因爲k的值永遠不會改變,您只需將k的值附加到列表中即可。

-1

不確定關於python, ,但看起來像你更新K的值也不知道什麼是Python語法中while循環的範圍。

2

只是移動其中k線在它:

l = [1,2] 
i = 0 
k = l[i]+l[i+1] 
while k <= 10: 
    l.append(k) 
    i += 1 
    k = l[i]+l[i+1] 

print l 
3

的Python評估的k所以值k不表達,但結果表達的

k = l[i]+l[i+1] # In your case it's l[0] + l[1] = 3 

您可能要評估每個循環的k

l = [1,2] 
i = 0 

for i in range(0, 10 + 1): 
    l.append(l[i] + l[i + 1]) 

print l 

而只是爲了好玩,更Python化斐波那契序列發生器(直譯):

def Fibonacci(): 
    a, b = 0, 1 

    while True: 
    yield a 

    a += b 
    a, b = b, a 

for n in Fibonacci(): 
    raw_input(n)