出於某種原因,此代碼不會打印任何內容並且不會停止運行,有人可以告訴我這裏出了什麼問題嗎?while循環代碼保持運行
l = [1,2]
i = 0
k = l[i]+l[i+1]
while k <= 10:
l.append(k)
i += 1
print l
出於某種原因,此代碼不會打印任何內容並且不會停止運行,有人可以告訴我這裏出了什麼問題嗎?while循環代碼保持運行
l = [1,2]
i = 0
k = l[i]+l[i+1]
while k <= 10:
l.append(k)
i += 1
print l
的k
(並且因此循環條件)的值在循環之前使用的i
(0)的當前值設置,並且循環執行期間不會改變。您將不得不根據循環內的i
的新值重新分配k
,以便更改它。
您沒有對k變量進行任何更改。一旦計算出K的值,代碼就會在while循環中獲得庫存,因爲k的值永遠不會改變,您只需將k的值附加到列表中即可。
不確定關於python, ,但看起來像你更新K的值也不知道什麼是Python語法中while循環的範圍。
只是移動其中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
的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)
你不修改while循環'k'。 – 2012-04-13 22:44:46