2017-04-25 1 views
0

3 개의 숫자의 합계를 반환합니다. 그러나 동일한 경우 합계에 포함되지 않습니다. 내 코드에서 잘못된 점을 찾아 내도록 도와 주시겠습니까?파이썬에서 값의 합 (등가를 제외)

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

당신은 훨씬 더 효율적 위의 모든 코드에 비해이

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

이 같은 set를 사용하여 두 줄의 코드 내에서 그것을 달성 할 수있다. 나는 프로그래밍이 문제를 효율적으로 해결할 수 있다고 믿기 때문에 이것을 제안했다.