2013-08-20 96 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):