Python if more than one of N variables is true
我需要检查是否定义了A、B、C和D中的多个:
1 2 3 | 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语句,但这看起来很可怕。你能提出更好的建议吗?
首先想到的是:
1 | if [a, b, c, d].count(True) > 1: |
。
尝试添加值:
1 2 | if sum([a,b,c,d]) > 1: print("Please specify at most one of 'a', 'b', 'c', 'd'.") |
这是因为布尔值继承自
1 2 | if sum(map(bool, [a,b,c,d])) > 1: print("Please specify at most one of 'a', 'b', 'c', 'd'.") |
号
或者,如果您只希望一个标志是
1 2 | if sum(map(bool, [a,b,c,d])) != 1: print("Please specify exactly one of 'a', 'b', 'c', 'd'.") |
如果只需要1个真值:
1 2 3 | 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'.)") |