繁体   English   中英

如何检查列表中具有特定要求的所有元素?

[英]How to check all the elements in a list that has a specific requirement?

我正在做一个关于不同版本的心脏游戏的功课。 它说如果给我们一个列表mycards ,其中包含玩家当前持有的所有牌。 并且play是一张代表潜在牌的单张牌。如果所有牌都包含HEART( H )或QUEEN OF SPADES( QS ),它将返回True。

例如

>>> mycards= ['0H','8H','7H','6H','AH','QS']
>>> play = ['QS']

它将返回True

这是我试过的

if play[1] == 'H':
    return True
if play == 'QS':
    return True
else:
    return False

但我认为我的代码只检查列表中的一个QS和一个H. 如何制作包含all QS或H的代码?

您的描述直接映射到解决方案:

编辑清晰:

mycards= ['0H','8H','7H','6H','AH','QS'] 
all((x == 'QS' or 'H' in x) for x in mycards)
#  True
>>> mycards= ['0H','8H','7H','6H','AH','QS']
>>> all(x[-1] == 'H' or x == 'QS' for x in mycards)
True

由于它是您的“家庭作业”,我不打算为您提供现成的代码。 :)

使用循环遍历列表:

例如:

for el in mycards:

在每次迭代时,您必须检查两个条件中的任何一个是否为真。

if el == 'QS' or el[1] == 'H':

如果卡是锹的女王或心脏以上的情况将是真实的。 希望你能到现在为止。 如果条件不正确,只需返回False。

如果循环检查了列表中的所有元素,但没有返回False,那么所有的牌都是Spade的Queen或者Heart。 因此在循环结束后返回True。

试试你自己一段时间,如果仍然没有得到我会根据你的要求发布代码(但你必须告诉我你尝试了什么:p)

编辑:既然你已经尝试过,我也会发布代码。

def HorQS(mycards):
    for i in mycards:
        if i != 'QS':
            if i[1] != 'H':
                return False
    return True

print HorQS(['0H','8H','7H','6H','AH','QS'])  # True
print HorQS(['0H','8H','7H','6H','AH','HS'])  # False
print HorQS(['0H','8H','7K','6H','AH','HS'])  # False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM