Python 变量在if语句中被覆盖

Python 变量在if语句中被覆盖,python,Python,编写一个程序从用户处读取3个整数,并计算整数之和。但是,如果其中一个值与另一个值相同,则不应计入总和 Enter a: 3 Enter b: 3 Enter c: 3 The sum is 3 正确的答案应该是0,但是我通过我的第一个if语句认识到a已经被重新分配到0,并且从那时起a=c代表0=我被这个测试用例卡住了 a = int(input("Enter a: ")) b = int(input("Enter b: ")) c = int(input("Enter c: ")) if a

编写一个程序从用户处读取3个整数,并计算整数之和。但是,如果其中一个值与另一个值相同,则不应计入总和

Enter a: 3
Enter b: 3
Enter c: 3
The sum is 3
正确的答案应该是0,但是我通过我的第一个if语句认识到a已经被重新分配到0,并且从那时起a=c代表0=我被这个测试用例卡住了

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)

问题是您将0重新分配给可能与其他值重复的值。首先需要同时对所有值进行比较,然后进行单个比较

a = int(input("Enter a: "))
b = int(input("Enter b: "))
c = int(input("Enter c: "))

s = 0

if a == b and a == c:
    s = 0
elif a == b:
    s = c
elif a == c:
    s = b
elif b == c:
    s = a
else:
    s = a + b + c

print("The sum is ", s)

问题是您将0重新分配给可能与其他值重复的值。首先需要同时对所有值进行比较,然后进行单个比较

a = int(input("Enter a: "))
b = int(input("Enter b: "))
c = int(input("Enter c: "))

s = 0

if a == b and a == c:
    s = 0
elif a == b:
    s = c
elif a == c:
    s = b
elif b == c:
    s = a
else:
    s = a + b + c

print("The sum is ", s)
您可以使用并仅计算出现一次的值:

count = Counter((a, b, c))

s = sum(value for value, quantity in count.items() if quantity == 1)
print(f"The sum is {s}")

您的实现的问题是,如果a==b将永远不会执行另外两个
elif
s。您需要将
elif
s更改为
if
s

然后您将再次测试
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}")
您可以使用并仅计算出现一次的值:

count = Counter((a, b, c))

s = sum(value for value, quantity in count.items() if quantity == 1)
print(f"The sum is {s}")

您的实现的问题是,如果a==b将永远不会执行另外两个
elif
s。您需要将
elif
s更改为
if
s

然后您将再次测试
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}")

添加附加条件:如果a==b和b==c,则总和为0。添加附加条件:如果a==b和b==c,则总和为0。@HiroProgator这里的观点很好,谢谢,我编辑了我的answer@hiroprotagonist很好,谢谢,我编辑了我的答案