用户输入的python中的无限循环

时间:2016-11-21 03:42:22

标签: python loops

我正在编写迭代到用户提供的数字的Python代码,但是在运行代码时我遇到了无限循环。请注意我尝试评论第3和第4行并替换了" userChoice"有一个数字,让我们说例如5,它运作正常。

import time

print "So what number do you want me to count up to?"
userChoice = raw_input("> ")

i = 0
numbers = []

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

    i = i + 1
    print "Numbers now: ", numbers
    print "At the bottom i is %d" % i
    time.sleep(1)

print "The numbers: "

for num in numbers:
    print num
    time.sleep(1)

2 个答案:

答案 0 :(得分:2)

raw_input返回一个字符串,而不是int。您可以通过将用户响应转换为int来解决问题:

userChoice = int(raw_input("> "))

在Python 2.x中,不同类型的对象是compared by the type name,因此可以解释自'int' < 'string'以来的原始行为:

  

CPython实现细节:除了数字之外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。

答案 1 :(得分:1)

您正在将数字与字符串进行比较:

while i < userChoice:

字符串将始终大于数字。至少在Python 2中,这些是可比较的。

您需要将userChoice转换为数字:

userChoice = int(raw_input("> "))