[英]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.