<blockquote>
<p>I would now like to assign the 3 randomly drawn cards as a value for each player key in the dict playerHand</p>
</blockquote>
<p>我在startNewGame中将<code>playerHand = {player: None</code>改为<code>playerHand = {player: []</code>,这样你就可以在pullCards列表中添加卡片,然后对后者的逻辑进行排序,这样每个玩家的手上就有3张卡片。我不确定甲板长度的测试是否适合您——如果不适合,请移动它(如果可以,请移动len(甲板)——无法通过迭代查看您想要做什么)。这里运行良好,希望有帮助</p>
<pre><code>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: [] for player in [player1, player2, player3]}
return playerHand
def pullCards():
playerHand = startNewGame()
deck = buildDeck()
#randomly shuffles deck
random.shuffle(deck)
#checks if at least 9 cards
#draws 3 random cards and pop() removes cards from the deck
for player in playerHand: # 'for' iterates through the dict's keys
for i in range(3):
if len(deck) >= 9:
randomCard = deck.pop(random.randint(0, len(deck) - 1))
playerHand[player].append(randomCard)
print(playerHand)
pullCards()
</code></pre>
<p>给予</p>
<pre><code>{'w': [['Clubs', 6], ['Golds', 10], ['Cups', 6]], 'e': [['Clubs', 7], ['Golds', 7], ['Golds', 1]], 'r': [['Golds', 12], ['Clubs', 12], ['Cups', 4]]}
</code></pre>
<p>另外,刚才看到<code>buildDeck()</code>运行了两次,但在startNewName中什么也不做——从那里删除它,或者将它分配给一个var,然后将它传递给pullCards</p>