python - 退换货(便士、五分钱、一角硬币和 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')
解决方案
这可以使用mod
,也称为余数运算符 (%) 和底除法来完成。
首先将所有内容转换为美分以避免处理十进制数字。
例如,如果我需要给出 1.41 美元 => 141 美分。
宿舍 (25)
141 // 25 = 5(给 5 个季度)
141 % 25 = 16(剩余 16 美分)
一角钱 (10)
16 // 10 = 4(给 4 个硬币)
16 % 10 = 6(剩余 6 美分)
其余的值等等。
推荐阅读
- python - Tensorflow 2.0:相当于 numpy. take_along_axis
- jboss - 在 keycloak-8.0.1 中将 jackson 依赖项版本从 2.9.10 升级到 2.10.1 时破坏 keycloak 服务器时出现问题
- reactjs - Redux 加载用户,但它获取 html 代码(部署 Heroku 时的 MERN 应用程序)
- python - 为什么 Python 脚本文件不能命名为 abc.py?
- google-cloud-platform - 日志未显示在 Google Cloud Logging UI 中
- sql - SQL LEFT JOIN 中的“ON 子句”中的连接顺序是否重要?
- kubernetes - 如何访问 KubeCF?
- python - 我们如何在 K-Nearest Neighbor 中找到最佳 K 值?
- machine-learning - 检测时间序列数据中的突变点最合适的机器学习模型是什么?
- latex - 开始学习乳胶并在我的编译中遇到 3 个错误