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

Python找零计算器开发问题:如何隐藏数量为0的币种输出

Python找零计算器优化方案

针对你需要隐藏数量为0的币种输出的需求,同时修正原代码拼写错误、优化计算逻辑,以下是修改后的完整代码:

# 计算找零金额
def main():
    # 定义币种面值与对应名称(单数、复数),按面值从大到小排序
    denominations = [
        (100, ("dollar", "dollars")),
        (25, ("quarter", "quarters")),
        (10, ("dime", "dimes")),
        (5, ("nickel", "nickels")),
        (1, ("penny", "pennies"))
    ]

    calc = True
    while calc:
        # 获取输入并转换为整数美分,避免浮点数精度问题
        try:
            total = round(float(input('Enter amount of change: ')) * 100)
        except ValueError:
            print("请输入有效的数字金额!")
            continue
        
        amount = total
        change = []

        # 计算每种币种的数量
        for value, (singular, plural) in denominations:
            count = amount // value
            if count > 0:
                change.append((count, singular if count == 1 else plural))
            amount = amount % value

        # 输出找零结果
        print('\n应找零:')
        if not change:
            print("没有需要找零的金额")
        else:
            for count, name in change:
                print(f"{count} {name}")

        # 询问是否继续
        user_input = input("\n按'Y'继续,按其他键退出: ")
        calc = user_input.lower() == 'y'
        
if __name__ == "__main__":
    main()

关键改动说明:

  • 结构化币种信息:用列表统一存储每个币种的面值和单复数名称,替代零散变量,代码更易维护。
  • 高效计算逻辑:使用整除//和取余%替代原while循环,计算更简洁高效。
  • 自动过滤零数量币种:仅当币种数量count > 0时才加入结果列表,自然隐藏无数量的币种。
  • 单复数适配:根据数量自动切换单复数名称,符合英语表达习惯(比如1 penny而非1 pennies)。
  • 输入容错:添加异常捕获处理无效输入,提升程序健壮性。
  • 修正拼写错误:原代码中的quaters改为quarters,pennys改为pennies。

示例运行效果:

输入0.26(26美分),输出:

应找零:
1 quarter
1 penny

输入1.37,输出:

应找零:
1 dollar
1 quarter
1 dime
2 pennies

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:30