【问题标题】:Lookup Table for BlackJack Deck of Cards二十一点纸牌的查找表
【发布时间】:2014-07-19 05:36:07
【问题描述】:

我正在制作一款运行良好的简单二十一点游戏——直到将人脸牌添加到牌组中。此查找表返回:KeyError: 1

我知道(或者至少很确定)这是因为:'rank': self.values[face]

为什么会返回 KeyError: 1 ?如何解决这个问题?

import random

class DeckOfCards(object):
def __init__(self):
    self.values = {"2": 2,
                   "3": 3,
                   "4": 4,
                   "5": 5,
                   "6": 6,
                   "7": 7,
                   "8": 8,
                   "9": 9,
                   "10": 10,
                   "J": 10,
                   "Q": 10,
                   "K": 10,
                   "A": 11,
                   }
    self.faces = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
    self.suits = ['C', 'D', 'H', 'S']
    self.unused_cards = []
    for suit in self.suits:
        for face in self.faces:
            self.unused_cards.append({'face': face, 'suit': suit, 'rank': self.values[face]})
    random.shuffle(self.unused_cards)
    self.used_cards = []

def play(self):
    print self.unused_cards

cardsss = DeckOfCards()
cardsss.play()

【问题讨论】:

  • ...因为self.values 没有密钥1
  • 请确保,只有values 的键在faces: self.faces = self.values.keys()
  • 其他人指出你混合了字符串和整数。我还要指出,你的牌组有 56 张牌,因为你有 4 个 A 和 4 个 1。

标签: python dictionary lookup-tables playing-cards blackjack


【解决方案1】:

在这一行,您试图访问 self.values 字典中不存在的键,因为您有一个 self.face 条目表示“1”,但您在 self.values 中没有键为“1”。

self.unused_cards.append({'face': face, 'suit': suit, 'rank': self.values[face]})

【讨论】:

  • 实际上,这不是SyntaxError - 列表、元组、字典等都可以在最后一项和右大括号/方括号/括号之间使用逗号。
  • @jonrsharpe,我想你是对的。我不经常使用 python,这在我用过的几乎所有其他语言中都是一个语法错误,所以我想我只是假设它在 python 中也是错误的语法。我应该检查一下。我从答案中删除了它。谢谢。
【解决方案2】:

self.values dict 将字符串作为键,但在self.unused_cards.append({'face': face, 'suit': suit, 'rank': self.values[face]}) 中,您使用的是int 类型的键。

这将解决它:

self.unused_cards.append({'face': face, 'suit': suit, 'rank': self.values[str(face)]})

【讨论】:

    【解决方案3】:

    self.valuesself.faces 之间存在不一致。 特别是self.values 有字符串作为键,而self.faces 有一些整数。

    这是一个可能的解决方法:

    self.faces = [ "2", "3", "4", "5", "6", "7","8", "9", "10", 'J', 'Q', 'K', 'A']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-10
      • 2011-02-02
      • 2019-06-03
      • 2020-06-18
      • 2011-01-25
      • 1970-01-01
      • 2018-04-02
      • 2013-01-25
      相关资源
      最近更新 更多