if语句中的变量被覆盖

kon*_*ona 1 python

编写一个程序,从用户那里读取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)

hir*_*ist 5

您可以使用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)