2017-04-25 11 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

これがどのように機能するかについての説明は、カッコで囲まれた括弧 '' '{}' ''が "重複要素のない順不同な集合"という集合を作成しているということです。 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

あなたは、はるかに効率的な上記のすべてのコードよりも、この

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

このようsetを使用して2行のコードの中にそれを達成することができます。私はプログラミングが問題を効率的に解決するためのものだと考えているので、これを提案しました。

関連する問題