Python:while循环不会终止

zki*_*and 3 python loops while-loop

我已经阅读了很多关于while循环的主题,我找不到一个告诉我自己的代码错误.我正在努力学习Python,我编写了这段代码,以满足练习练习33的练习练习#1.我无法弄清楚当我输入原始数据时循环不会终止的原因.

numbers = []

def number_uno(z):
    i = 0
    while i < z:
        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


print "Pick a random number: "
z = raw_input("> ")

number_uno(z)

print "Done"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?它只是不断向"i"添加1并且不会停止打印.

谢谢,扎克

mgi*_*son 9

raw_input返回一个字符串.当你将它传递给你的函数时,你要比较一个整数和一个字符串.请注意,python3.x中不推荐使用此行为.你不能用这种方式将整数与python 3.x中的字符串进行比较.(它会提出一个TypeError).

你可以很容易地解决这个问题:

number_uno(int(z))
Run Code Online (Sandbox Code Playgroud)

应该运行正常.

  • 在CPython 2.x中,比较不同类型的对象时的默认行为是将它们的类型作为字符串进行比较.因此所有整数都小于所有字符串,因为`"int"<"str"`.这样做是为了在对包含各种类型的列表进行排序时按类型隔离对象,但我不相信其他Python实现也不得不这样做. (4认同)