我需要检查是否定义了a,b,c和d中的多个:
def myfunction(input, a=False, b=False, c=False, d=False):
if <more than one True> in a, b, c, d:
print("Please specify only one of 'a', 'b', 'c', 'd'.)
我目前正在嵌套if语句,但这看起来很可怕。你能提出更好的建议吗?
答案 0 :(得分:12)
尝试添加值:
if sum([a,b,c,d]) > 1:
print("Please specify at most one of 'a', 'b', 'c', 'd'.")
这是有效的,因为布尔值继承自int
,但如果有人传递整数,它可能会被滥用。如果这是一个风险,那就把它们都归咎于布尔人:
if sum(map(bool, [a,b,c,d])) > 1:
print("Please specify at most one of 'a', 'b', 'c', 'd'.")
或者,如果您只想要一个标志为True
:
if sum(map(bool, [a,b,c,d])) != 1:
print("Please specify exactly one of 'a', 'b', 'c', 'd'.")
答案 1 :(得分:12)
首先想到的是:
if [a, b, c, d].count(True) > 1:
答案 2 :(得分:2)
如果你想要1个真值:
def myfunction(input, a=False, b=False, c=False, d=False):
if filter(None,[a, b, c, d]) != [True]:
print("Please specify only one of 'a', 'b', 'c', 'd'.)")