3

我已经阅读了很多关于 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"

有任何想法吗?它只是不断将 1 添加到“i”并且不会停止打印。

谢谢,扎克

4

1 回答 1

9

raw_input返回一个字符串。当你将它传递给你的函数时,你正在比较一个整数和一个字符串。请注意,此行为在 python3.x 中已弃用。您不能以这种方式在 python 3.x 中将整数与字符串进行比较。(它会提高一个TypeError)。

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

number_uno(int(z))

应该运行正常。

于 2012-12-17T19:41:59.310 回答