使用两个列表检查一个列表是否包含非重复元素

2024-06-02 07:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python制作了一个记忆游戏,玩家轮流在网格中拾取两块瓷砖,看看显示的字母是否匹配

我为此使用了两个列表,一个用于存储字母,例如letters = ['A', 'A', 'B', 'B'],另一个用于记录到目前为止在游戏中匹配的显示字母,例如correctly_revealed = ['A', 'A', ' ', ' '],然后使用if letters == correctly_revealed条件结束游戏。只有当所选磁贴中的两个字母都匹配时,才会显示这些字母

然而,字母并不总是成对出现,这意味着剩余的未公开字母都是不同的字母,例如letters = ['B', 'B', 'C', 'D']correctly_revealed = ['B', 'B', ' ', ' ']。因此,我不知道如何设置一个if条件来结束游戏


Tags: 记忆网格游戏列表if字母记录玩家
3条回答

如果两个列表在同一索引上有相同的元素,那么检查字母==discovered将正常工作,但如果索引不同,则使用

for i in revealed:
    letters.remove(i)
if not letters:
    end_game_code

您可以按照以下代码在python中检查两个列表:

import functools

if functools.reduce(lambda x, y : x and y, map(lambda p, q: p == q,letters,correctly_revealed), True):
   #finish the game or any logic you want 
   pass

不确定我是否完全理解,但听起来您可以只跟踪匹配的总数(在您的示例中,有2个),然后当num_matches == 2处于游戏完成状态时

当然,您必须确保正确计算匹配项

相关问题 更多 >