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
相关产品推荐
相关产品推荐

