我想在下面的代码中理解raw_input的行为。
我知道num
将是字符串。
无论我输入的是什么号码,总是输入elif
部分,即如果num是5,则应该转到if num<check:
部分,或者如果num是10,则应该转到else
部分。它每次都会elif
。我认为比较STRING和INT可能会抛出异常(我不这么认为)但是为了以防万一,所以我已经包含了try except
但是正如预期的那样它没有抛出任何异常。但让我感到困惑的是,即使给出的输入为10,它仍然总是达到elif
,至少在这种情况下我期待输出等于
num = raw_input('enter a number')
check = 10
try:
if num<check:
print 'number entered %s is less'%num
elif num>check:
print 'number entered %s is greater'%num
else:
print 'Equal!!!'
print 'END'
except Exception,e:
print Exception,e
拜托,PYTHON大师,解开谜团:)
答案 0 :(得分:4)
raw_input
返回一个字符串。因此,请使用int(raw_input())
。
关于string和int comparsions的工作方式,请查看here。
答案 1 :(得分:1)
请参阅answer here。
基本上你要比较苹果和橘子。
>>> type(0) < type('10')
True
>>> 0 < '10'
True
>>> type(0) ; type('10')
<type 'int'>
<type 'str'>
答案 2 :(得分:0)
Python 2.7:
num = int(raw_input('enter a number:'))
Variable "num" will be of type str if raw_input is used.
type(num)>>str
or
num = input("Enter a Number:")# only accept int values
type(num)>>int
Python 3.4 :
num = input("Enter a Number:") will work ...
type(num)>>str
convert the variable "num" to int type(conversion can be done at time of getting the user "input") :
num1 = int(num)