简单地添加Python

时间:2017-04-07 22:02:36

标签: python parameters addition

功能名称:lone_sum

参数 a:整数值 b:整数值 c:整数值

给定3个整数值,a,b,c,返回它们的总和。但是,如果其中一个值与另一个值相同,则不计入总和。

返回值:a,b和c的总和,省略了相同的值。

我有这个,我完全失去了它!我错过了什么?

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

2 个答案:

答案 0 :(得分:3)

问题:

1)

a!=b and b!=c

此测试还不够:a可能等于c。 (例如1,0,1

2)

如果a==b and b==c,则总计应为a,而不是0,对吧?

解决方案

修改后的代码

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

替代

您只需将值打包到set即可删除重复项:

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

print(lone_sum(1,2,3))
# 6
print(lone_sum(1,2,2))
# 3
print(lone_sum(3,3,3))
# 3

请注意,此行为符合您的说明,而不是您的代码(最后一个示例为0)。

作为奖励,将功能调整为n值是微不足道的:

def lone_sum(*values):
    return sum(set(values))

答案 1 :(得分:0)

您可以使用设置来处理唯一值,并使用 reduce 对它们求和:

from sets import Set

def lone_sum(a,b,c):
   nums = Set([a,b,c])
   return reduce(lambda x,y: x+y, nums)