Python零钱兑换非零结果格式化输出问题求助
零钱兑换格式输出问题解决思路
需求回顾
接收整数形式的总零钱金额,用最少硬币数输出兑换结果,每种硬币占一行,需正确使用单复数形式(如1 Penny、2 Pennies),硬币类型为Dollars、Quarters、Dimes、Nickels、Pennies。
当前问题
已完成硬币数量计算,但不知道如何按要求格式打印(去除零值、单复数正确、每种占一行)。
解决思路
- 关联数量与硬币名称:不要单独存储数量,将数量和对应的硬币单复数名称绑定成元组列表,后续处理时能直接对应,避免名称匹配混乱。
- 过滤零值:遍历绑定后的列表,直接剔除数量为0的硬币项。
- 处理单复数:对每个非零项,根据数量判断使用单数还是复数名称——数量为1时用单数,其余用复数。
- 逐行打印:遍历处理后的结果,每一项单独打印一行。
修改后的代码
change = int(input()) # 存储(数量, 单数名称, 复数名称)的元组列表 coins = [ (change // 100, "Dollar", "Dollars"), (change % 100 // 25, "Quarter", "Quarters"), (change % 100 % 25 // 10, "Dime", "Dimes"), (change % 100 % 25 % 10 // 5, "Nickel", "Nickels"), (change % 100 % 25 % 10 % 5, "Penny", "Pennies") ] # 过滤零值并处理单复数 result = [] for count, singular, plural in coins: if count > 0: result.append(f"{count} {singular}" if count == 1 else f"{count} {plural}") # 逐行打印结果 for line in result: print(line)
代码说明
- 用元组列表把每个硬币的数量和对应单复数名称绑定,解决了单独存数量时名称匹配的问题。
- 遍历过程中同步完成零值过滤和单复数判断,逻辑简洁清晰。
- 最终逐行输出结果,完全符合需求格式。
内容的提问来源于stack exchange,提问作者user21922227
相关产品推荐
相关产品推荐

