首页 > 解决方案 > 退换货(便士、五分钱、一角硬币和 25 美分硬币)

问题描述

我正在尝试创建一个函数,该函数返回特定更改的便士、五分钱、一角硬币和四分之一的数量(考虑到成本和给定的金额)。

我写了以下代码,但输出始终是 1 美分。我应该改变什么?

penny = 0.01
nickel = 0.05
dime = 0.10
quarter = 0.25

def return_change(cost, amount):
    
    number_of_pennies = 0
    number_of_nickels = 0
    number_of_dimes = 0
    number_of_quarters = 0
    change = amount - cost
    
    while change > 0:
        
        if change > quarter:
            change -= quarter
            number_of_pennies += 1
          
        if dime < change < quarter:
            change -= dime
            number_of_nickels += 1

        if nickel < change < dime:
            change -= nickel
            number_of_dimes += 1

        if penny < change < nickel:
            change -= penny
            number_of_pennies += 1

                    
                
        break
        
print(f'Given that the change is {amount-cost}$, we will give it in:\n{number_of_pennies} Pennies\n{number_of_nickels} Nickels\n{number_of_dimes} Dimes\n{number_of_quarters} Quarters')

标签: python

解决方案


这可以使用mod,也称为余数运算符 (%) 和底除法来完成。

首先将所有内容转换为美分以避免处理十进制数字。

例如,如果我需要给出 1.41 美元 => 141 美分。

  1. 宿舍 (25)

    141 // 25 = 5(给 5 个季度)

    141 % 25 = 16(剩余 16 美分)

  2. 一角钱 (10)

    16 // 10 = 4(给 4 个硬币)

    16 % 10 = 6(剩余 6 美分)

其余的值等等。


推荐阅读