【发布时间】: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