功能名称: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
答案 0 :(得分:3)
a!=b and b!=c
此测试还不够:a
可能等于c
。 (例如1,0,1
)
如果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)