我有一個學校作業,我必須洗一副牌并挑選出第一張臉牌。我做了 if 陳述句來檢查串列中的第一個位置,但它非常笨拙,我希望能夠檢查所有位置而無需手動輸入。我對 Python 非常陌生,任何幫助都將不勝感激。
import random
deck = ["AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS",
"AH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JH", "QH", "KH",
"AD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JD", "QD", "KD",
"AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JC", "QC", "KC"]
print(deck)
random.shuffle(deck)
print(deck)
if deck[0] == "JS":
print(deck[0])
elif deck[0] == "QS":
print(deck[0])
elif deck[0] == "KS":
print(deck[0])
elif deck[0] == "JH":
print(deck[0])
elif deck[0] == "QH":
print(deck[0])
elif deck[0] == "KH":
print(deck[0])
elif deck[0] == "JD":
print(deck[0])
elif deck[0] == "QD":
print(deck[0])
elif deck[0] == "KD":
print(deck[0])
elif deck[0] == "JC":
print(deck[0])
elif deck[0] == "QC":
print(deck[0])
elif deck[0] == "KC":
print(deck[0])
uj5u.com熱心網友回復:
您可以遍歷串列并檢查卡是否以“JKQ”開頭。
for i, card in enumerate(deck):
if card.startswith('J') or card.startswith('Q') or card.startswith('K'):
return {"index" : i, "card" : card }
uj5u.com熱心網友回復:
您擁有所謂的“蠻力”解決方案(即手動檢查所有面卡的集合)。
您可以通過更改 if 陳述句來改進它。與其檢查所有可能的面卡,不如檢查它是否是 J、Q、K。
我也看不到你在哪里迭代甲板,你需要一個 for 回圈。
uj5u.com熱心網友回復:
你能做這樣的事情嗎?
import random
deck = ["AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS",
"AH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JH", "QH", "KH",
"AD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JD", "QD", "KD",
"AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JC", "QC", "KC"]
def shuffle(deck):
random.shuffle(deck)
return deck
def pull_first_face_card(deck):
# Continue to pull cards until you get a face card
while True:
# Pull a card
card = deck.pop(0)
# If it's a face card, return it
if card[0] in ["K", "Q", "J"]:
return card
if __name__ == "__main__":
# Shuffle the deck
deck = shuffle(deck)
# Pull the first face card
card = pull_first_face_card(deck.copy())
# Print the card
print(card)
# Print the deck
print(deck)
uj5u.com熱心網友回復:
我會以不同的方式構建套牌,itertools.product然后使用 while 回圈來拉出第一張(和隨后的)面卡:
import itertools
import random
CARD_NUMBERS = ["A"] [str(n) for n in range(2, 11)]
CARD_FACES = ["J", "Q", "K"]
CARD_SUITS = {"S", "H", "D", "C"}
deck = list(itertools.product(CARD_NUMBERS CARD_FACES, CARD_SUITS))
random.shuffle(deck)
def next_face_card(deck):
while deck:
number, suit = deck.pop()
if number in CARD_FACES:
return number, suit
print(next_face_card(deck))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/473806.html
