如何在硬币找零计算器中仅显示数量大于零的硬币?
硬币找零计算器优化需求
我正在开发一款硬币找零计算器,已经写完全部代码,但无法实现仅显示所需硬币(不显示数量为0的硬币)。当前程序运行时会输出所有硬币类型,包括数量为0的quarters(25美分)、dimes(10美分)、nickels(5美分),示例输出如下:
Enter change amount to convert: 3 0 quarter(s) 0 dime(s) 0 nickle(s) 3 penny(ies) Want to calculate another amount? (y/n):
我希望不显示quarters、dimes和nickels这类数量为0的硬币,现有Python代码如下:
while True: change = input("Enter change amount to convert: ") if str(change).isnumeric(): change = int(change) if change < 100: quarters, dimes, nickels, pennies = coinCalc(change) print(quarters, "quarter(s)") print(dimes, "dime(s)") print(nickels, "nickle(s)") print(pennies, "penny(ies)") print("Want to calculate another amount? (y/n): ") answer = input() if answer == "n": print("Bye!") break else: print("Error! Invalid integer entered please try again.") else: print("Error! Invalid integer entered please try again.")
解决方案
你可以通过将硬币数量与名称配对,遍历后仅打印数量大于0的项来实现需求,修改后的代码如下:
while True: change = input("Enter change amount to convert: ") if str(change).isnumeric(): change = int(change) if change < 100: quarters, dimes, nickels, pennies = coinCalc(change) # 组合硬币数量与对应名称 coin_list = [ (quarters, "quarter(s)"), (dimes, "dime(s)"), (nickels, "nickle(s)"), (pennies, "penny(ies)") ] # 仅输出数量大于0的硬币 for count, label in coin_list: if count > 0: print(count, label) print("Want to calculate another amount? (y/n): ") answer = input() if answer == "n": print("Bye!") break else: print("Error! Invalid integer entered please try again.") else: print("Error! Invalid integer entered please try again.")
说明
- 将每种硬币的数量和名称打包成元组存入列表,便于统一遍历处理
- 通过
if count > 0的判断,过滤掉数量为0的硬币条目,只输出实际需要的找零硬币
内容的提问来源于stack exchange,提问作者Ty Kenyon
相关产品推荐
相关产品推荐

