2013-04-02 26 views
-1

我知道如果你是代碼專家,這看起來可能很愚蠢。但是如果你回答它,你會在編碼者的超自然境界中變成一個典型的菩薩。這是一個笑話。爲什麼這個如果條件「如果num是int:」不起作用?

所以,我寫這段代碼:

def media():  
n = 0 
soma = 0 
while True: 
    print("Type a number") 
    num = input() 
    print type(num) 
    if num is int: 
     soma = soma + num 
     n = n + 1 
     print "soma =", soma, " num = ", num, " n = ", n 
     media = soma/n 
     print media 
    else: 
     break 
media() 

當我運行代碼,我得到的是這樣的:

enter image description here

我的問題是:爲什麼條件if num is int:是未履行?

我的目標是使條件「如果用戶輸入ENTER,然後中斷」。

在此先感謝。

+1

因此,正確的語法是「if isinstance(num,int)」。那麼,Python是如此美麗簡單,形式「如果num是int:」似乎是如此整潔。太遺憾了! – craftApprentice

+3

請注意,在Python中,類型檢查通常被認爲是不好的形式,正如使用2.x中的input() - 使用'raw_input()'來代替,然後使用'int()'來嘗試編寫一個數字返回的字符串。如果成功,則是一個數字,如果拋出異常,則不是。 –

回答

11
if isinstance(num, int) 

會是正確的方法。

if num is int 

正在檢查的numint身份是否相同,不同之處是int類型和num是該類型的一個實例,以便它們不是相同的對象。

+1

你值得因果報應。我在涅see見到你! – craftApprentice