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

Python找零程序问题:1欧元硬币无法正常显示

欧元找零程序1欧元部分修复方案

问题分析

当前程序里1欧元硬币无法正常显示的核心问题有两个:

  • 判断条件逻辑错误:1欧元的输出判断用了if (change % 2) >= 2,但change % 2的结果只能是0或1,永远不可能满足>=2的条件,导致该分支永远不会触发。
  • 1欧元数量计算可优化:原代码用change % 2计算1欧元数量,虽部分场景下正确,但依赖前面取余的连锁计算,不如直接用总找零减去已分配的面额总和更可靠。

修正后的代码

def main():
    money1 = input("Purchase price: ")
    money2 = input("Paid amount of money: ")
    price = int(money1)
    paid = int(money2)
    change = paid - price

    ten_euro = change // 10
    five_euro = (change - ten_euro * 10) // 5
    two_euro = (change - ten_euro * 10 - five_euro * 5) // 2
    one_euro = change - ten_euro * 10 - five_euro * 5 - two_euro * 2

    if price < paid:
        print("Offer change:")
        if ten_euro > 0:
            print(ten_euro, "ten-euro notes")
        if five_euro > 0:
            print(five_euro, "five-euro notes")
        if two_euro > 0:
            print(two_euro, "two-euro coins")
        if one_euro > 0:
            print(one_euro, "one-euro coins")
    else:
        print("No change")

if __name__ == "__main__":
    main()

修改说明

  1. 1欧元数量计算:改为用总找零依次减去10、5、2欧元的总金额,直接得到1欧元的数量,逻辑直观且不易出错。
  2. 输出判断条件:所有面额的输出判断都改为检查对应面额的数量是否大于0,替代原来基于剩余金额范围的判断,逻辑更严谨,避免出现判断条件与实际数量不匹配的情况。
  3. 5、2欧元计算优化:同样改为基于已分配的大额面额后剩余的金额计算,保持逻辑一致性。

测试验证

  • 示例1输入:
    Purchase price: 12
    Paid amount of money: 50
    
    输出:
    Offer change:
    3 ten-euro notes
    1 five-euro notes
    1 two-euro coins
    1 one-euro coins
    
  • 示例2输入:
    Purchase price: 9
    Paid amount of money: 20
    
    输出:
    Offer change:
    1 ten-euro notes
    1 one-euro coins
    

内容的提问来源于stack exchange,提问作者Karina Viche Avila

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:51:01