2012-10-30 222 views
2
def sum10(a, b): 
    if sum([a, b]) % 10 == 0: return True; return False 

print sum10(7, 3) 
print sum10(-13, -17) 
print sum10(3, 8) 

結果是:一條線,如果在Python else條件

True 
True 
None 

不出我所料:

True 
True 
False 

什麼想法?

回答

8

您的代碼

def sum10(a, b): 
    if sum([a, b]) % 10 == 0: return True; return False 

相當於

def sum10(a, b): 
    if sum([a, b]) % 10 == 0: 
     return True; return False 

所以return False不會求。


一些(的可能是無盡的)替代方案:

if sum([a, b]) % 10 == 0: 
     return True 
    return False 

return sum([a, b]) % 10 == 0 

return True if sum([a, b]) % 10 == 0 else False 

return False if (a+b) % 10 else True 

或(最可讀的恕我直言)

return not (a + b) % 10 
+0

謝謝牛排先生。還有一個問題,你可以讓你的「更好地使用1」到一行嗎? – mko

+0

@yozloy我增加了更多的例子。 – sloth

9

這是你想要的。

def sum10(a, b): 
    return sum([a, b]) % 10 == 0 

而且在Python中三元If是這樣的

<True Statment> if <Conditional Expression> else <False Statement> 

True if sum([a,b]) % 10 == 0 else False 

也許我也建議使用加號?

True if (a+b) % 10 == 0 else False 
+0

感謝您的三元解決方案 – mko

2

如果你想擁有的if-else一個襯裏,他們應該這樣寫:

return True if sum([a, b]) % 10 == 0 else False 

注缺乏兩點在那一個班輪裏。

+0

再次感謝我回答我的問題@alestanis,三元是要走的路 – mko

1

我認爲return False永遠不會執行,由於它是到如果不是外面。

所以,當你把一個真實的,如果條件下,您正在執行return True,但從來沒有第二個聲明。

+0

+1對於它不起作用的好解釋,我認爲我應該堅持三元的方式 – mko

-1
def sum10(a, b): 
    return sum([a, b])%10 == 0 
+4

這裏的一些解釋不會被忽視。 – rubicks