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

Python找零计算代码if-else逻辑异常,请求问题排查

找零计算代码问题排查与修正

问题分析

你的代码存在几个核心逻辑漏洞:

  • 数量为1时无输出:仅当纸币/硬币数量大于1时才打印,数量为1时直接跳过,比如输入100、25这类金额完全没反应
  • 剩余金额更新不完整:只有在打印时才更新剩余找零,数量为1时没更新,导致后续面值处理全部出错
  • 冗余嵌套判断:多层不必要的if嵌套把逻辑绕得很复杂,容易遗漏场景
  • 0值处理错误:输入0时会输出0 Penny,不符合"无找零"的预期

修正后的代码

user_input_change = int(input('Enter Integer: '))

if user_input_change < 0:
    print('No change')
elif user_input_change == 0:
    print('No change')
else:
    # 定义面值列表,按从大到小顺序处理
    denominations = [
        (100, 'Dollar', 'Dollars'),
        (25, 'Quarter', 'Quarters'),
        (10, 'Dime', 'Dimes'),
        (5, 'Nickel', 'Nickels'),
        (1, 'Penny', 'Pennies')
    ]
    
    remaining = user_input_change
    for value, singular, plural in denominations:
        count = remaining // value
        if count > 0:
            # 根据数量选择单复数
            if count == 1:
                print(f'{count} {singular}')
            else:
                print(f'{count} {plural}')
            # 更新剩余金额
            remaining = remaining % value

改进说明

  1. 简化判断逻辑:先处理负数和0的情况,直接输出"No change",避免原代码的冗余嵌套
  2. 统一面值处理:用列表存储所有面值的数值、单数和复数名称,循环处理每个面值,代码更简洁易维护
  3. 完整处理所有数量:只要数量>0就打印,不管是1还是大于1,同时每次处理后都更新剩余金额
  4. 单复数自动适配:根据数量自动选择单数或复数表述,符合语言习惯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:06:21