【发布时间】:2020-11-19 07:43:50
【问题描述】:
我正在尝试创建一副牌,随机洗牌,然后将 3 张牌发给 3 位玩家。我创建了一个函数 buildDeck(),它以列表的形式返回卡组中需要的 48 张卡片。然后我尝试用键值 {playername: [3 random cards from deck]} 制作字典 playerHands。然后我 def pullCards() 洗牌,检查牌组中至少有 9 张牌,然后从牌组中随机抽取 3 张牌,并使用 pop() 将它们移除。我现在想为 dict playerHand 中的每个玩家键分配 3 张随机抽取的卡片作为值。
我是编程新手,不知道这是否适合这个程序,也不知道在列表和字典中使用列表是否适合。
我不应该为这个程序使用类,我什至不知道如何使用!真的很感激一些帮助!谢谢
import random
def printMenu():
#prints menu of options
menu = "s: start new game\np: Pull cards for all players\no: output deck\nh: output players’ hand\ne: exchange one card\nd: declare winner\nq: quit\nSelect an option:\n"
print(menu)
return
printMenu()
def buildDeck():
suits = ['Clubs', 'Golds', 'Cups', 'Swords']
values = list(range(1, 13))
deck = []
#iterates through elements in suits and elements in values appending each respective element as a new element into deck
for i in suits:
for x in values:
deck.append(list([i, x]))
return deck
def startNewGame():
#prompts user for player names
player1 = input("Enter player 1's name:\n")
player2 = input("Enter player 2's name:\n")
player3 = input("Enter player 3's name:\n")
#calls 48 card deck using buildDeck() function
buildDeck()
#creates dictionary of each player's empty hand with values of None
playerHand = {player: None for player in [player1, player2, player3]}
return playerHand
def pullCards():
playerHand = startNewGame()
deck = buildDeck()
#randomly shuffles deck
random.shuffle(deck)
#iterates through cards in the deck and checks if at least 9 cards
for cards in deck:
if deck.count(cards) >= 9:
#draws 3 random cards and pop() removes cards from the deck
for i in range(3):
randomCard = deck.pop(random.randint(0, len(deck) - 1))
for keys in playerHand.keys():
playerHand[keys] = randomCard
【问题讨论】:
-
您能否更具体地说明问题所在?请参阅How to Ask、help center。
标签: python list dictionary random