如何从字典中获取列表的后半部分

2024-04-26 11:03:24 发布

您现在位置:Python中文网/ 问答频道 /正文

import random
cards = {"Ace" : (1, 11), "numberedCard" : random.randint(2, 10), "Jack" : 11, "Queen" : 12, "King" : 13}
playerDeck = [random.choice(list(cards.keys())), random.choice(list(cards.keys()))]
print("You have been dealt a", playerDeck[0], "and a", playerDeck[1])
total = playerDeck[0] + playerDeck[1]
print("Your total is:", total)

那我怎么才能得到王牌,国王,王后,杰克的号码呢


Tags: importrandomkeyslisttotalcardsprintace
1条回答
网友
1楼 · 发布于 2024-04-26 11:03:24

有很多方法可以让游戏正常运行。这是一个基本选项(没有种子)

我建议使用统一的字典,而不是元组、函数和整数的混合

例如,将卡片映射到它们的值(将ace映射到1,然后将值11作为特例管理,或者反之亦然):

cards_values = { 'Ace' : 1, 'Two' : 2, 'Three' : 3, 'Four' : 4, 'Five' : 5, 'Six' : 6, 'Seven' : 7, 'Eight' : 8, 'Nine' : 9, 'Ten' : 10, 'Jack' : 10, 'Queen' : 10, 'King' : 10 }

然后,当你从牌堆中挑选一张牌时(让种子分开),你应该考虑避免挑选一张牌两次。一个选项是定义可用卡的列表,然后洗牌牌组和弹出一张卡。一旦你弹出卡片,就把它附加到玩家牌堆上

例如:

deck = list(cards_values.keys())
player_deck = []

n = 3 # or whatever cards you like
print("You have been dealt a:")

for _ in range(n):
  random.shuffle(deck)
  card = deck.pop()
  player_deck.append(card)
  print(card)

如果您打印卡片组,您将看到deck缺少n中的player_deck卡片:

print (deck) #=> ['Queen', 'Jack', 'Ten', 'Three', 'King', 'Two', 'Four', 'Nine', 'Five', 'Seven']
print (player_deck) #=> ['Six', 'Ace', 'Eight']

获取得分player_deck映射到cards_values(我没有考虑ace的可能值11):

sum([ cards_values[card] for card in player_deck ])

相关问题 更多 >