我正在做一个关于不同版本的心脏游戏的作业。它说如果给我们一个列表 mycards ,其中包含玩家当前持有的所有牌。 游戏是代表潜在卡片的单张卡片。如果全部他们的卡片包含HEART(H
)或QUEEN OF SPADES({{1} })它将返回True。
例如
QS
它将返回True
这就是我试过的
>>> mycards= ['0H','8H','7H','6H','AH','QS']
>>> play = ['QS']
但我认为我的代码只检查列表中的一个QS和一个H.如何制作包含if play[1] == 'H':
return True
if play == 'QS':
return True
else:
return False
QS或H?
答案 0 :(得分:10)
您的说明直接映射到解决方案:
为清晰起见编辑:
mycards= ['0H','8H','7H','6H','AH','QS']
all((x == 'QS' or 'H' in x) for x in mycards)
# True
答案 1 :(得分:5)
>>> mycards= ['0H','8H','7H','6H','AH','QS']
>>> all(x[-1] == 'H' or x == 'QS' for x in mycards)
True
答案 2 :(得分:2)
由于它是您的“家庭作业”,我不打算为您提供现成的代码。 :)
使用循环遍历列表:
例如:
for el in mycards:
在每次迭代时,您必须检查这两个条件中的任何一个是否为真。
if el == 'QS' or el[1] == 'H':
如果卡片是Spade女王或者心脏以上状态将是真实的。希望你能到现在为止。如果条件不成立,只需返回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