使用 != 得到一个 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
所以我有一个名为 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