You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python二十一点游戏中修改calculate_hand_value函数调整Ace取值方法

实现逻辑
  • 先遍历手牌计算初始总点数(Ace默认按11取值),同时统计手牌里Ace的数量
  • 当总点数超过21且还有未调整的Ace时,每次将1个Ace的取值从11改为1,对应总点数减去10,同时可用Ace计数减1,直到总点数≤21或没有Ace可以调整为止
修改后的calculate_hand_value函数
def calculate_hand_value(hand):
    hand_value = 0
    ace_count = 0
    # 计算初始总点数,同时统计Ace数量
    for card in hand:
        card_val = get_card_value(card)
        hand_value += card_val
        if card_val == 11:
            ace_count += 1
    # 超过21时调整Ace取值
    while hand_value > 21 and ace_count > 0:
        hand_value -= 10 # 11改为1,差值为10
        ace_count -= 1
    return hand_value
效果示例

比如手牌为["Ace of clubs", "King of spades", "Five of hearts"]时,初始计算总点数为11+10+5=26,超过21,调整1个Ace后总点数变为16,符合二十一点规则。如果手牌包含2张Ace加1张K,初始总点数为11+11+10=32,调整2次Ace后总点数为12,结果正确。

内容的提问来源于stack exchange,提问作者ennh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:45:04