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

Blackjack算法实现问题:输入11,11,10未返回预期'BUST'

问题原因与修复方案

问题根源

当传入blackjack(11,11,10)时,代码执行流程如下:

  1. 计算总和bj = 11+11+10 = 32,显然大于21,且存在11,触发elif bj > 21 and el == True分支。
  2. 计算调整后的值bja = 32-10 = 22,随后直接return bja,程序终止。
  3. 后续的elif bja >21判断根本没机会执行——你的代码在调整总和后,没有检查调整值是否仍超过21,直接返回了结果,这就是返回22而非预期'BUST'的原因。

修复后的代码

def blackjack(a,b,c):
    total = a + b + c
    has_ace = 11 in (a, b, c)
    
    if total <= 21:
        return total
    elif has_ace:
        adjusted_total = total - 10
        return adjusted_total if adjusted_total <=21 else "BUST"
    else:
        return "BUST"

修复说明

  • 调整逻辑:在存在11的分支里,先计算调整后的值,再判断是否仍超过21,符合题目要求的"调整后仍超过21则返回'BUST'"规则。
  • 简化判断:用11 in (a,b,c)替代冗余的多条件判断,代码更简洁易读。
  • 变量优化:使用total、adjusted_total、has_ace这类语义清晰的变量名,提升代码可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:58:17