raw_input()的行为

时间:2013-07-14 09:19:16

标签: python python-2.7 raw-input

我想在下面的代码中理解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大师,解开谜团:)

3 个答案:

答案 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)