[英]How can I use for loop to remove match from a list?
我正在嘗試在 Python 中制作 Go Fish 紙牌游戲,但我在第一步中遇到了麻煩。 每次抽牌時,我都希望它在手中尋找匹配,如果匹配則將兩者都刪除。 本質上,“card”從牌組中彈出一張牌,“for”循環遍歷手牌進行匹配。 如果找到匹配項,則移除手中的牌,並且永遠不會將牌添加到手牌中(真的消失了。)通過使用 dubugger,我發現腳本會自動將彈出的牌放入手牌中到達“for”循環。 我有兩個問題:為什么它會這樣工作? 我怎樣才能做到這一點? 謝謝你!
ps 我還注意到比較面部卡片很困難,我將其表示為“A”、“K”、“Q”和“J”。 如果您有更好的解決方法,我願意接受建議,但否則我可以解決這個問題。
def draw_card(hand):
# Handles very first card drawn. Adds card if hand is empty
card = list.pop(cards)
print('card is',card)
for i in hand:
print('Hand is: ',hand)
if i == card:
print(i,card)
print('This value will be removed: ',i)
hand.remove(i)
else:
hand.append(card)
return hand
您不想遍歷手牌,只需使用in關鍵字查看手牌是否包含彈出的牌。 還有,什么是cards
? 我從 pop() 參數中刪除了它。 這樣,它只會從牌組中彈出最后一張牌。 最后,永遠不要使用list作為列表的名稱(它被保留為 Python 關鍵字)。 我把它改名為甲板。
def draw_card(hand):
# Handles very first card drawn. Adds card if hand is empty
card = deck.pop()
print('card is',card)
if card in hand:
print('This value will be removed: ',card)
hand.remove(card)
else:
hand.append(card)
return hand
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.