简单Python代码的困扰

4 投票
6 回答
572 浏览
提问于 2025-04-15 14:09

我正在学习Python,遇到了一段简单代码的问题:

a = raw_input('Enter a number: ')

if a > 0:
    print 'Positive'
elif a == 0:
    print 'Null'
elif a < 0:
    print 'Negative'

这段代码运行得很好,但有一个问题,就是无论我输入正数、负数还是零,它总是打印出“Positive”。我猜应该有个简单的解决办法,但我找不到;-)

提前谢谢你们!

6 个回答

7

这是因为 a 是一个字符串,也就是你输入的内容。你需要用 int() 把它转换成整数,才能进行数字比较。

a = int(raw_input('Enter a number: '))
if a > 0:
    print 'Positive'
elif a == 0:
    print 'Null'
elif a < 0:
    print 'Negative'

另外,input() 也可以帮你自动转换类型。

a = input('Enter a number: ')
7

我想进一步解释一下我在被接受的答案中的评论,下面是我会怎么做。

value = None
getting_input = True

while getting_input:
    try:
        value = int(raw_input('Gimme a number: '))
        getting_input = False
    except ValueError:
        print "That's not a number... try again."

if value > 0:
    print 'Positive'
elif value < 0:
    print 'Negative'
else:
    print 'Null'
7

因为你使用了 raw_input,所以你得到的值是一个字符串,而字符串在比较时总是被认为大于0(即使这个字符串是'-10')。

你可以试试用 input('请输入一个数字: '),这样Python会帮你自动转换成正确的类型。

最终的代码看起来会像这样:

a = input('Enter a number: ')
if a > 0:
    print 'Positive'
elif a == 0:
    print 'Null'
elif a < 0:
    print 'Negative'

不过,正如很多人指出的,使用 input() 可能会出错,因为它实际上会解析传入的Python对象。

一个更安全的处理方式是将 raw_input 转换成你想要的类型,比如:

a = int( raw_input('Enter a number: '))

但是要注意,你仍然需要处理一些错误,以避免出现问题!

撰写回答