简单Python代码的困扰
我正在学习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: '))
但是要注意,你仍然需要处理一些错误,以避免出现问题!