while循环不在python中退出

时间:2012-02-03 21:27:16

标签: python while-loop infinite-loop

我现在正在尝试自学python,而且我正在使用“学习Python艰难之路”中的练习。

现在,我正在进行涉及while循环的练习,其中我从脚本中执行while循环,将其转换为函数,然后在另一个脚本中调用该函数。最终程序的唯一目的是将项目添加到列表中,然后打印列表。

我的问题是,一旦我调用该函数,嵌入式循环决定无限继续。

我已多次分析我的代码(见下文),并且找不到任何明显的错误。

def append_numbers(counter):
    i = 0
    numbers = []

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

        i += 1
        print "Numbers now: ", numbers
        print "At the bottom i is %d" % i

count = raw_input("Enter number of cycles: ")

print count
raw_input()

append_numbers(count)

4 个答案:

答案 0 :(得分:15)

我相信你想要这个。

count = int(raw_input("Enter number of cycles: "))

如果不将输入转换为整数,最后会在count变量中输入一个字符串,即如果在程序要求输入时输入1,则计数为{{1} }。

字符串和整数之间的比较结果为'1'。因此,False中的条件始终为while i < counter:,因为False是整数,而i是程序中的字符串。

在您的程序中,如果您使用counter来检查print repr(count)变量中的值是什么,则可以自行调试。对于您的程序,当您输入1时,它会显示count。根据我建议的修补程序,它只显示'1'

答案 1 :(得分:1)

将输入字符串转换为整数... count=int(count)

答案 2 :(得分:-1)

以上已被清除,为什么一直在循环。它循环很多(= ASCII代码非常大)

但要解决问题,你可以简单地说:

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

答案 3 :(得分:-4)

raw_input返回一个字符串,但i是一个整数。尝试使用input代替raw_input