我正在编写迭代到用户提供的数字的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)
答案 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("> "))