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

Python实现Exact Change精确找零代码输入45无输出问题求解

错误原因分析
  • 缩进不符合Python语法规范:所有if判断下的执行代码都没有正确缩进,会直接触发语法错误
  • 逻辑分支结构错误:将Quarters、Dimes等硬币的判断用elif挂载到Dollars的判断分支下,只要总金额小于100(比如你输入的45),就不会进入任何后续硬币的判断逻辑,自然没有输出
  • 变量作用域问题:dollar_change 仅在总金额≥100时才会定义,总金额小于100时调用该变量会直接触发NameError
  • 类型拼接错误:直接将int类型的硬币数量和字符串相加,会触发TypeError,需要先将数值转为字符串,或者使用格式化字符串输出
  • 缺少剩余金额的全局传递:每种硬币计算完成后要把剩余金额继续传递给下一类硬币计算,不能仅在当前分支内处理
修正后代码
total_change = int(input())
remaining = total_change

if remaining <= 0:
    print('No change')
else:
    # 计算美元
    dollar_cnt = remaining // 100
    remaining = remaining % 100
    if dollar_cnt == 1:
        print(f"{dollar_cnt} Dollar")
    elif dollar_cnt > 1:
        print(f"{dollar_cnt} Dollars")
    
    # 计算25美分
    quarter_cnt = remaining // 25
    remaining = remaining % 25
    if quarter_cnt == 1:
        print(f"{quarter_cnt} Quarter")
    elif quarter_cnt > 1:
        print(f"{quarter_cnt} Quarters")
    
    # 计算10美分
    dime_cnt = remaining // 10
    remaining = remaining % 10
    if dime_cnt == 1:
        print(f"{dime_cnt} Dime")
    elif dime_cnt > 1:
        print(f"{dime_cnt} Dimes")
    
    # 计算5美分
    nickel_cnt = remaining // 5
    remaining = remaining % 5
    if nickel_cnt == 1:
        print(f"{nickel_cnt} Nickel")
    elif nickel_cnt > 1:
        print(f"{nickel_cnt} Nickels")
    
    # 计算1美分
    penny_cnt = remaining
    if penny_cnt == 1:
        print(f"{penny_cnt} Penny")
    elif penny_cnt > 1:
        print(f"{penny_cnt} Pennies")
效果验证

输入45时的输出为:

1 Quarter
2 Dimes

完全符合最少硬币找零的要求,单复数也对应正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:27:01