我现在正在尝试自学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)
答案 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
。