家庭作业帮助 - 使用模来数出钞票和硬币

问题描述 投票:0回答:2

注意:我不需要答案!我希望得到下一步的指导

大家好! 我是 python 新手,正在做一些作业,并对我正在工作的问题有疑问:

"Define a function consolidate_change that takes as arguments counts of different US coins (similar to the previous function) and prints out the simplest number of bills and coins needed to make that amount. [11pt]

For example, when called with arguments of 10 quarters, 9 dimes, 8 nickels, and 7 pennies, the function should print:


Number of dollars: 3
Number of quarters: 3
Number of dimes: 1
Number of nickels: 0
Number of pennies: 2
Total amount: $3.87
You must use your previous value_of_change() method in this calculation to determine the total amount."

现在,这是 Python 简介,所以虽然我知道有非常有效的方法可以做到这一点,但我还没有到在我们的课程中使用它们的时候。

我相信我可以编写一个提供余数的模函数,然后将余数分配给下一个变量,并继续使用模函数,直到没有更多的余数。我心理上的障碍是如何将模的余数分配给新变量。这是我到目前为止所拥有的,实际上什么都没有:

`def consolidate_change(value_of_change):
    number_dollars  = total_value % 1.00
    number_quarters = number_dollars % .25
    number_dimes = number_quarters % .10
    number_nickles = number_dimes % .05
    number_pennies = number_nickles % 0.1`

上面引用的 value_of_change 函数:

`def value_of_change(quarters, dimes, nickels, pennies):
    q = .25
    d = .10
    n = .05
    p = .01
    total_value = (quarters * q) + (dimes * d) + (nickels * n) + (pennies * p)
    return(round(total_value, 2))`

我只是不确定该去哪里。这是一个非常初学者的课程,我很高兴学习,但它也非常自我指导。

有什么想法要做什么吗?我对基本方向完全没问题,然后必须自己编写代码,但如果有人碰巧也有任何类似的示例,以便我可以可视化代码的结构,那也将非常感激!

谢谢! :)

我陷入了如何获取模函数并将函数的其余部分分配给新变量的困境。

python modulo
2个回答
0
投票

您当前的行

number_dollars  = total_value % 1.00
暗示存在误解。正如您所写,模运算符为您提供余数,但您不会像这里那样使用它。

使用示例金额:3.87 % 1.00 -> 0.87

这不是您所期望的 3 美元。考虑一下如何在这里使用 0.87 的余数。


0
投票

你的想法是正确的。目前,每一步都取模,得到除法的余数。这样做来获得该硬币的数量是没有意义的,因为余数是适合该面额硬币的数量。您要做的就是取下限除法,即 适合该金额的硬币的最大数量。模数是没有的剩余量。您可以在 Python 中使用

//
运算符进行楼层划分,例如
number = top // bottom
。它还可以做到
number = int(top / bottom)

因此,对于每个教派,您要做两件事。首先,使用下限除法找出当前货币金额中有多少该面额的硬币。然后,您使用取模来更新剩余金额。

© www.soinside.com 2019 - 2024. All rights reserved.