使用 != 得到一个 python while 语句来工作

getting a python while statement using != to work

所以我有一个名为 lonesum(a,b,c) 的程序,仅当输入一次时才需要将输入的 3 个数字加在一起。所以 onesum(1,2,3) 会 return 6 但 onesum(1,1,3) 会 return 3。我有那个部分。我需要帮助的是让一个语句起作用,如果用户输入任何不是整数的东西,即 onesum(.5,2,3) 将 return 出错,该语句将 return 出错。到目前为止,我有这个 while 语句,我认为它可以工作但没有,:

while (a,b,c) != int:
     print("Error")
     return None
while a==b==c:
    return 0
while a==b:
    return c
while b==c:
    return a
while a==c:
    return b
while a!=b!=c:
    sum1=(a+b+c)
    return sum1

(这是我的代码的其余部分,这是有效的部分)

我的问题是 != 不起作用,我不知道该怎么做。有什么建议吗?

尝试这样的事情:

if not all(type(v) is int for v in (a, b, c)):
    print("Error!")
    return None

你要检查的是(a,b,c)中的每个值是否都是整数类型。所以你必须检查每个值,而不是元组本身。

内置函数 all 迭代可迭代对象,如果所有值都为真,则 returns 为真。我创建了一个迭代元组 (a, b, c) 的生成器表达式,将每个值的类型与 int 进行比较。 all 遍历生成器表达式。因此,如果 (a, b, c) 中的所有值都具有类型 int,则它 returns True.

如果您想要所有只出现一次的数字的总和,有更简洁的方法可以做到。数一数,出现一次的求和:

from collections import Counter

def lonesum(a, b, c):
    counts = Counter((a, b, c))
    return sum(v for v, cnt in counts.items() if cnt == 1)

如果在尝试求和时将非数字值作为参数传递,这将隐式引发错误;如果您想 print 一个错误而不是传播异常,请将其设为:

def lonesum(a, b, c):
    try:
        counts = Counter((a, b, c))
        return sum(v for v, cnt in counts.items() if cnt == 1)
    except TypeError:
        print("Error!")
        return None