为什么raw_input在这个Learn Python the Hard Way练习变体中创建了一个无限循环?

Jea*_*ius 5 python while-loop

我正在尝试通过学习Python的艰难方式,并试图在我可以进一步教育的地方乱七八糟.我认为这样可行:设置raw_input以设置while循环的限制,然后让while循环执行到我用变量"frequency"建立的限制.

它,呃,没有.相反,它将Python发送到创建数字列表的无限循环中,每个循环看起来比最后一个(非常长)列表长一个增量.

原始代码有"while i <6" - 我添加了raw_input变量,即使我输入与原始代码(6)中相同的变量,它也会执行无限循环.

这是完整的脚本:

i = 0 
numbers = []

print "What is the frequency?"
frequency = raw_input ('Kenneth? ')

while i < frequency:
    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
Run Code Online (Sandbox Code Playgroud)

为最大限度的无知而道歉 - 我现在在平装本面前有一份Python for Software Design的副本,这是我在LPTHW之后的待办事项清单上的下一件事.

Céd*_*ien 6

raw_input会给你一个字符串对象,而不是整数.尝试frequency = int(frequency)在循环之前制作,这将使比较有价值.

  • 在赋值之前将整个事物转换为int也是更隐式的:`frequency = int(raw_input('Kenneth?'))`. (3认同)