为什么while语句无限循环?

时间:2013-08-20 16:25:01

标签: python windows python-2.7 while-loop

我在Windows PowerShell中使用Python 2.7。

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作为value的输入时,loop()会变成无限循环。

知道出了什么问题吗?

4 个答案:

答案 0 :(得分:4)

raw_input的结果,变量value(在函数中传递给loop)是一个字符串。您将此与i(整数)进行比较。在Python 2.x中,所有整数都小于所有字符串,因此无论i < loop有多大,i始终为真。

将输入转换为整数以使比较起作用:

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

(我还建议不要将函数的参数命名为函数本身;它只是令人困惑。)

答案 1 :(得分:1)

您必须将raw_input放入int()

取代:

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

on:

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

或者你可以改变:

while i < loop:

while i < int(loop):

答案 2 :(得分:0)

我确信你实际上是在运行循环('6')而不是循环(6)。

答案 3 :(得分:0)

因为value是一个字符串

你应该像这样调用你的函数

loop(int(value))