Python 检查元素,如果至少有3个匹配,则为True

Python 检查元素,如果至少有3个匹配,则为True,python,python-3.x,operators,Python,Python 3.x,Operators,我正在解决一个问题,我需要从用户那里获得4个输入,如果至少有3个匹配,那么输出是真的。唯一的问题是我只能使用逻辑运算符(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

我正在解决一个问题,我需要从用户那里获得4个输入,如果至少有3个匹配,那么输出是真的。唯一的问题是我只能使用逻辑运算符(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'
阈值=3
如果总和(坟墓)>=阈值else print('Nem'+默认消息.lower()),则打印(默认消息)

使用
all
功能。如果所有值均为真,则
all
函数返回真。您不必执行
tome[0]和tome[1]…

类似地,如果
tome[0]或tome[1]…
中的任何一个为true,则
any
返回true

范围(3)内的i的
:
ans=全部(大部头[:i]+大部头[i+1:])
打印(任何(ans))

这段代码所做的是迭代输入中的所有3个组合,找到所有真正的三元组,并将其放入
ans

“我只能使用逻辑运算符”-这到底意味着什么以及为什么…?一般逻辑非常简单:迭代输入并计算“匹配”的数量。这可以通过多种方式实现:使用循环并递增int,过滤列表并检查其长度……“如果至少3个匹配”-它们必须匹配什么?
(“Nemég a lámpa”,“ga lámpa”)[sum(bool(value)表示坟墓中的值)>=3]
。如果值只能是
0
1
,则可以使用
(“Nemég a lámpa”,“g a lámpa”)[sum(坟墓)>=3]
…将输入转换为整数并求和…