a = raw_input ("enter a number")
i = 0
numbers = []
while i < a:
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
print "The numbers: "
for num in numbers:
print num
所以我跟着lpthw并且只是搞乱了代码,为什么当我使用raw_input并输入一个像6这样的数字时这个循环会变成无限循环?不应该i = i + 1来阻止这种情况发生吗?
答案 0 :(得分:9)
在Python 2.7中,raw_input
返回str
(字符串)。因此,当您比较i < a
时,您将整数与字符串进行比较,它将always return True
。
要解决此问题,请将输入转换为整数:
a = int(raw_input(...))
注意:正如@AshwiniChaudhary所评论,比较(<
,<=
,>
或>=
)一个带字符串的整数Python 3.x将引发异常:
TypeError: unorderable types: int() <operator> str()
答案 1 :(得分:1)
raw_input返回一个字符串。你的变量a是一个字符串,字符串大于python中的int 您需要将 a 转换为int:
a = int(raw_input("enter a number"))
答案 2 :(得分:1)
如果您使用raw_input
,那么a
将是一个字符串。您需要int
,i < a
比较才能按预期工作。使用input
代替raw_input
。
为了将来参考,我在Python 3中移除了input
,并将raw_input
重命名为input
,因此您需要在Py3中使用int(input (...))
。
答案 3 :(得分:1)
你正在做两件可能导致无限循环的事情。
标签和空格混淆了,python关心缩进,所以请确保i = i + 1与numbers.append(i)
它继续存在的实际原因是当python收集raw_input时,它会将其转换为字符串,而不是整数,因此比较不会像您期望的那样工作。更改为此,它将按预期工作:
a = int(raw_input(“输入数字”))