为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2021-11-23 19:43:10
import randomcards = {"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)那么我如何获得为总制作指定的 A、K、Q、J 的数字
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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


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


例如,将卡片映射到它们的值(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 ])


查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信