我正在处理一个问题,需要从用户那里获得4个输入,如果至少有3个匹配,那么输出为True。唯一的问题是我只能使用逻辑运算符(or,and,not,nor,nand,xor等(。我在4打开的情况下做到了,但不知道如何在没有复杂代码的情况下为3做到这一点。也可以在没有和如果的情况下完成?谢谢
tomb = []
for i in range(4):
all = int(input("A kapcsoló állapota (1-fel, 0-le): "))
tomb.append(all)
if tomb[0] and tomb[1] and tomb[2] and tomb[3]:
print("Ég a lámpa")
else:
print("Nem ég a lámpa")
您可以计算答案并应用您想要的任何匹配阈值:
default_msg = 'Ég a lámpa'
threshold = 3
print(default_msg) if sum(tomb) >= threshold else print('Nem' + default_msg.lower())
使用all
函数。如果所有值都为true,则all
函数将返回true。你不必做tome[0] and tome[1] ...
。
类似地,如果tome[0] or tome[1] ...
中的任何一个为真,则any
返回真。
for i in range(3):
ans = all(tome[:i] + tome[i+1:])
print(any(ans))
这段代码所做的是迭代输入中的所有3个组合,找到所有真正的三元组并将其放入ans
中。