2017-04-25 29 views
0

返回3個數字的總和,但如果它們相同,則不計入總數。你能幫我找到我的代碼有什麼問題嗎?Python中的值總和,不包括相等的值

def lone_sum(a,b,c): 
    t=0 
    if a==b and a!=c: 
     t=a+c 
    elif a==c and a!=b: 
     t=a+b 
    elif b==a and b!=c: 
     t=b+c 
    elif b==c and b!=a: 
     t=b+a 
    elif c==a and c!=b: 
     t=a+b 
    elif c==b and c!=a: 
     t=b+a 
    elif a==b and b==c: 
     t=a 
    return t 
+0

一般來說,您應該舉例說明什麼時候沒有給您正確的輸出。這就是說,所提供的解決方案在清晰和高效方面邁出了重要的一步。 –

回答

3

一個簡單的辦法:

def lone_sum(a, b, c): 
    return sum({a, b, c}) 
+0

對這種工作方式的解釋是curley括號''{''''正在創建一個集合,即「沒有重複元素的無序集合」。 https://docs.python.org/3/tutorial/datastructures.html#sets – Garren

0
def lone_sum(a,b,c): 
    if a==b and a!=c: 
     t=a+c 
    elif a==c and a!=b: 
     t=a+b 
    elif b==a and b!=c: 
     t=b+c 
    elif b==c and b!=a: 
     t=b+a 
    elif c==a and c!=b: 
     t=a+b 
    elif c==b and c!=a: 
     t=b+a 
    elif a==b and b==c: 
     t=a 
    else: 
     t = a + b + c 
    return t 
print (lone_sum(21, 32, 32)) 

沒有什麼錯與您的代碼,我想你忘了打電話的功能。 我還爲您的代碼添加了一些小功能。

1

您可以通過使用set這樣

def lone_sum(a,b,c): 
    return sum(set([a,b,c])) 

這比所有上面的代碼更有效的兩行代碼中實現它。我提出這個建議是因爲我相信編程是爲了有效地解決問題。