编写一个程序,从用户那里读取3个整数,然后计算这些整数的总和。但是,如果其中一个值与另一个值相同,则不应计入总和。
Enter a: 3
Enter b: 3
Enter c: 3
The sum is 3
Run Code Online (Sandbox Code Playgroud)
正确答案应该为0,但是我首先意识到if语句a已被重新分配为0,并且从那时起,a!= c等于0!= 3,我陷入了这个测试用例中
a = int(input("Enter a: "))
b = int(input("Enter b: "))
c = int(input("Enter c: "))
if a == b:
a = 0
b = 0
elif a == c:
a = 0
c = 0
elif b == c:
b = 0
c = 0
print("The sum is", a + b + c)
Run Code Online (Sandbox Code Playgroud)
您可以使用collections.Counter并且只计算一次出现的值:
count = Counter((a, b, c))
s = sum(value for value, quantity in count.items() if quantity == 1)
print(f"The sum is {s}")
Run Code Online (Sandbox Code Playgroud)
您的实现的问题在于if a == b,其他两个elif将永远不会执行。您需要将elifs 更改为ifs。
那么您将a == c再次进行测试(设置a为后0)。为了使该方法起作用,您将不得不使用临时变量:
tmp_a, tmp_b, tmp_c = a, b, c
if a == b:
tmp_a, tmp_b = 0, 0
if a == c:
tmp_a, tmp_c = 0, 0
if b == c:
tmp_b, tmp_c = 0, 0
print(f"The sum is {tmp_a + tmp_b + tmp_c}")
Run Code Online (Sandbox Code Playgroud)