这是教程的一部分。我的目标是从用户那里获取一个输入,然后在条件为真时递增它。
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
我已多次读过我的剧本,看不到。我怀疑它可能与缩进有关?但我不确定。
答案 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