如何在 Python Blackjack 游戏中获取键值

How to get value of key in Python Blackjack game

我刚刚开始了一个二十一点游戏项目。到目前为止,我已经创建了卡片和手工制作功能。正如你从下面的代码中看到的那样,我通过 pick() 函数选择了我的手,我得到了排名字典的键。

rank={'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'J':10,
   'K':10,'Q':10,'A':1}
your_hand=[]
opponent_hand=[]
def pick():    
    your_hand =  random.sample(list(rank),2) 
    opponent_hand = random.sample(list(rank),2) 
    print(your_hand[values])
    print(opponent_hand)
def count():
    pass

我想知道这段代码是否获取了它们的值,如果没有,我如何获取它们的值?这也是编写二十一点游戏的好方法。

将字典传递给 list() returns 键的列表。所以 your_hand 是一个列表,包含排名字典的键。得到对应的values:

your_hand_values = [rank[card] for card in your_hand]

您可以考虑从一开始就将卡片及其价值都存储在 your_hand 列表中,如下所示:

your_hand =  [(card, value) for card, value in random.sample(rank.items(), 2)]

(附带说明一下,这是一个迫切需要 OOP 方法的项目。只是我的 2 美分。)

变量 values 没有连接到任何东西,所以当你尝试引用它时你会得到一个 NameError

列表 your_handopponent_hand 包含字符串列表(rank 中的键)。要将这些转换为来自 rank 的值,您需要使用键进行查找,例如:

your_hand_values = [rank[card] for card in your_hand]

这将为您提供 int 的列表。如果你想得到总和,你可以使用 sum:

your_hand_total = sum(rank[card] for card in your_hand)

关于更大的问题,这种方法的一个问题是,一手牌不可能有超过一张相同点数的牌,而一副真正的牌有 4 套花色。

由于构建 21 点游戏是一个非常常见的初学者编码问题,所以我将此 post 保存在书签中,以便在有人问我如何做时使用。 :) https://codereview.stackexchange.com/questions/234880/blackjack-21-in-python3/234890#234890