2013-07-14 48 views
1

我想了解下面代碼中raw_input的行爲。 我知道num會是字符串。 無論我輸入什麼號碼,總是輸入elif部分,即如果num是5,則應該輸入if num<check:部分,或者如果num是10,則應該輸入else部分。每一次它會去elif。我認爲比較STRING和INT可能會拋出異常(我不這麼認爲),但爲防萬一,所以我包含了try except,但正如預期的那樣,它沒有拋出任何異常。但令我百思不解的是,爲什麼它總是打elif即使給出的輸入爲10,至少在這種情況下,我期待輸出平等raw_input()的行爲

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

的[Python是怎樣比較兩個字符串和int?]可能重複(http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int) –

回答

4

raw_input返回一個字符串。所以使用int(raw_input())

關於字符串和int比較如何工作,請看here

+0

這個鏈接已經消除了我所有的懷疑/疑問/困惑。感謝這個鏈接,我知道將int類型轉換爲int類型,但只是想了解raw_input,我猜,只用'input()'也能解決我的目的。 – ramd

+0

只使用'input()'會是一個安全風險。在Python 3中,爲什麼Python 2'input'的功能沒有了。 – Matthias

1

查看answer here

基本上你會比較蘋果和橘子。

>>> type(0) < type('10') 
True 
>>> 0 < '10' 
True 
>>> type(0) ; type('10') 
<type 'int'> 
<type 'str'> 
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)