将元组与元组序列的某些元素匹配

问题描述

我有一系列包含以下内容的答案元组(用于单词搜索游戏):

[(0,'downright','plain'),(5,4,'up','on'),1,'left','mainly'),(4,5,'falls'),(0,2,'right','spain'),3,'in'),(1,'upright','rain'),(3,'the')]

我想将一个猜测元组一个答案相匹配,一个猜测元组包含:

(0,'downright')

我如何将猜测元组与序列中的一个答案元组匹配?

我的尝试(尽管它有时会给出 False,即使它确实匹配):

def is_valid_answer(answers,guess):
found = True

for x,y in enumerate(answers):
    if guess == (answers[x][0:3]):
        return found
    else:
        found = False
        
        return found

解决方法

如果 answers 的第一项与 guess 不匹配,您的循环已经结束,因为您立即返回 found (False)。因此,您的循环始终只执行一次迭代并且只比较第一项。

如果找到匹配项,则仅在循环中返回(使用 True)。如果没有匹配项,您可以在循环后返回 False

def is_valid_answer(answers,guess):
    for x in answers:
        if guess == x[0:3]:
            return True
    return False

顺便说一句:这里不需要 enumerate,您可以简单地比较产生的值 (x)。