为什么我似乎有一个无限循环?

时间:2013-12-17 01:06:19

标签: python while-loop infinite-loop python-2.x

这是教程的一部分。我的目标是从用户那里获取一个输入,然后在条件为真时递增它。

inputNum = raw_input("What is max number?")

def incrementF(greatest):
    i = 0
    numbers = []

    while i < greatest:
        print "At the top of the list numbers is %d" % i
        numbers.append(i)

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

    print "The numbers:"

    for num in numbers:
        print num

incrementF(inputNum)

当我运行脚本并为inputNum输入任何内容时,而不是几行输出,我似乎遇到了无限循环。

例如,原始输入提示符是10,我希望看到类似的内容:

At the top of the list numbers is 0,
Numbers now: 0,
0
At the top of the list numbers is 1,
Numbers now: 1,
1

我已多次读过我的剧本,看不到。我怀疑它可能与缩进有关?但我不确定。

1 个答案:

答案 0 :(得分:10)

引用raw_input greatest中引用的内容:

  

然后该函数从输入中读取一行,将其转换为字符串   (剥离尾随换行符),然后返回。

因此,raw_input将是一个字符串,因为您使用>>> 1 < 'a' True >>> 100000000000 < 'a' True >>> 来获取它。

此外,在Python 2.x中,字符串总是被评估为大于整数*:

True

这意味着您的while循环的条件将始终评估为greatest,因为i将始终被评估为大于greatest。因此,你得到一个无限循环。

只需将i设为inputNum = int(raw_input("What is max number?")) 之类的整数:

,即可解决此问题
{{1}}

*注意:如果您想了解更多相关信息,请参阅docs