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

Python实现1美元所有零钱组合:嵌套循环代码无法生成4 quarters组合的修复咨询

修复1美元零钱组合代码的问题

嘿,这个问题我太熟了——根源就是Python的range()函数是左闭右开的,你刚好踩了这个小坑!

问题出在哪?

你看,range(n)只会生成从0到n-1的整数,完全不会包含n本身:

  • 你的total_quarters是4,所以range(total_quarters)生成的是0、1、2、3,quarter变量永远到不了4,自然打不出全quarters的组合。
  • 同理,dime和nickel的循环也有同样问题:比如当剩余金额刚好能被10整除时,最大的dime数量会被漏掉;nickel也是一样。

修复方案

只需要给每个range()的上限都加1,让它包含我们需要的最大硬币数量就行:

print("Change for $1")
dollar = 1
total_pennies = int(dollar * 100)  # 100 pennies in a dollar
total_quarters = int(total_pennies / 25)  # 4 quarters in a dollar

# 修复:range上限+1,包含最大可能的硬币数量
for quarter in range(total_quarters + 1):
    remaining_quarter = total_pennies - quarter * 25
    # 同理,dime的range也要+1,覆盖所有可能的dime数量
    for dime in range(int(remaining_quarter / 10) + 1):
        remaining_dimes = remaining_quarter - dime * 10
        # nickel的range同样+1,包含刚好凑整的情况
        for nickel in range(int(remaining_dimes / 5) + 1):
            penny = remaining_dimes - nickel * 5
            print(f"{quarter} quarters, {dime} dimes, {nickel} nickels, {penny} pennies")

修复后的效果

现在运行代码,你就能看到4 quarters, 0 dimes, 0 nickels, 0 pennies这个组合了,同时其他所有合法的零钱组合也都会被完整输出,不会再漏掉任何一种情况~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:54:09