Search code examples
pythonif-statementsumunique

Python sum of non duplicate int


I am given 3 int, a, b, c. I would like to find the sum of all three int provided that they are unique. If a, b, or c has the same values as any of the other values, then they don't count towards the sum.

Example 1:

a = 3, b = 3, c =3
sum = 0

Example 2

a = 1, b = 3, c =3
sum = 1

This is what I have done. Is there a more pythonic way of doing this without so many if else statements?

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

    elif a == b == c:
        return 0

    elif a == b:
        return c

    elif b == c:
        return a

    elif a == c:
        return b

Solution

  • from collections import Counter
    def lone_sum(a, b, c):
        d = Counter([a, b, c])
        return sum(k for k in d if d[k]==1)
    

    Add any number of numbers:

    def lone_sum(*L):
      d = Counter(L)
      return sum(k for k in d if d[k]==1)
    

    Add numbers repeated exactly c times:

    def rep_sum(c, *L):
      d = Counter(L)
      return sum(k for k in d if d[k]==c)
    

    Add numbers repeated at most c times:

    def rep_sum(c, *L):
      d = Counter(L)
      return sum(k for k in d if d[k]<=c)
    

    ... or if you're bored and want to get really creative:

    def lone_sum(*L):
      nums = set()
      all_nums = set()
      for num in L:
        if num in nums:
          nums.remove(num)
        elif num not in all_nums:
          all_nums.add(num)
          nums.add(num)
      return sum(nums)