2013-08-20 93 views
0

我在Windows PowerShell中使用Python 2.7。爲什麼這個while語句無限循環?

def loop(loop): 
    i = 0 
    numbers = [] 
    while i < loop: 
     print "At the top i is %d" % i 
     numbers.append(i) 

     i += 1 
     print "Numbers now: ", numbers 
     print "At the bottom i is %d" % i 



value = raw_input("Choose the loop value:\n>") 
print value 
loop(value) 

當我輸入6作爲輸入爲valueloop()變成無限循環。

任何想法是什麼問題?

+4

變化'WHI當我 2013-08-20 16:28:49

+0

你確定嗎?當我運行它時,它是有限的。 – enginefree

+0

@Sp。涼!謝謝!但爲什麼? – hugleecool

回答

4

您的raw_input,變量value(在您的函數中傳遞給loop)的結果是一個字符串。您正在將此與i(一個整數)進行比較。在Python 2.x中,所有整數都小於所有字符串,因此無論i得到多大,i < loop總是如此。

將您輸入的整數作出比較的工作:

value = int(raw_input("Choose the loop value:\n>")) 

(而且我也建議未命名您的函數的參數一樣的功能本身,它只是混亂。)

+0

@CTZhu'使用評論來詢問更多信息或提出改進建議。避免評論,如「+1」或「謝謝」。 –

0

我相信你實際上正在運行循環('6')而不是循環(6)。

0

,因爲值是一個字符串

你應該這樣調用

loop(int(value)) 
1

你有你的功能,把你的raw_inputint()

取代:

value = raw_input("Choose the loop value:\n>") 

上:

value = int(raw_input("Choose the loop value:\n>")) 

或者你可以改變:

while i < loop: 

while i < int(loop):