《Python语言程序设计》——3.4 实例研究:最小数量的硬币

简介:

本节书摘来自华章计算机《Python语言程序设计》一书中的第3章,第3.4节,作者:[美]梁勇(Y. Daniel Liang) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 实例研究:最小数量的硬币

现在,我们来看一个使用本节所讲的特性的示例程序。假如你想开发一个程序将一定数量的钱分类成几个更小货币单元。该程序让用户输入总金额,这是一个用美元和美分表示的浮点值,然后输出一个报告,罗列出等价的货币:美元、两角五分硬币、一角硬币、五分硬币以及美分个数,如示例运行所示。
你的程序应该报告最大数目的美元,然后依次是二角五分硬币、一角硬币、五分硬币以及美分个数,这样就得到最小量的硬币。
下面是编写这个程序的步骤:
1)提示用户输入一个十进制带小数点的数字,例如:11.56。
2)将钱数(11.56)转换成分数(1156)。
3)将分数除以100得到美元个数。使用分数%100得到余数即是剩余的分数。
4)将剩余的分数除以25得到两角五分硬币的个数。使用分数%25得到余数即是剩余的分数。
5)将剩余的分数除以10得到一角硬币的个数。使用分数%10得到余数即是剩余的分数。
6)将剩余的分数除以5得到五分硬币的个数。使用分数%5得到余数即是剩余的分数。
7)剩余的分数就是一美分硬币数。
8)显示结果。
完整的程序如程序清单3-4 所示。
程序清单3-4 ComputeChange.py


e53696271eca628f5257089088fa0201928b498c


33618a3ec300397a890b9d80d3a2c5f6d860c707

变量amount存储的是来自控制台的变量(第2行)。这个变量保持不变,因为amount必须在程序的结尾显示结果。程序引入一个变量remainingamount(第5行)以存储变化的remainingAmount。
变量amount是一个浮点数,代表的是美元和美分。它被转换为一个表示美分的整型变量remainingamount。例如:如果amount为11.56,那么remainingamount的初始值是1156。1156//100是11(第8行)。求余运算符得到除法的余数。因此,1156%100=56(第9行)。
这个程序是从remainingamount中提取出最大数目的两角五分硬币,然后获得一个新的remainingamount(第12~13行)。持续相同的过程,程序就可以在剩余数目中得到一角硬币、五分硬币和美分的最大数目。
如示例运行所示,结果中显示:0个一角硬币、1个五分硬币和1个美分。如果不显示0个一角硬币而只是显示1个五分硬币和1个美分的话就更好了。你将在下一章学习如何使用选择语句修改这个程序(参见编程题4.7)。
警告:这个例子涉及的一个严重问题是在将一个浮点数转换成整型remainingamount的时候可能会损失精度。这就可能导致一个不准确的结果。如果你试图输入10.03,10.03*100可能是1003.999 999 999 999 9。你就会发现程序最终结果为10美元和2美分。为了解决这个问题,输入用美分表示的整型数值(参见编程题3.8)。

相关文章
|
3月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
214 1
|
4月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
175 2
|
5月前
|
存储 运维 监控
基于跳表数据结构的局域网上网记录监控时序查询优化算法研究与 Python 实现
本文探讨跳表(Skip List)在局域网上网记录监控中的应用,分析其在快速范围查询、去重与异常检测中的优势,并提供 Python 实现示例,为高效处理海量时序数据提供参考。
108 0
|
2月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
3月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
401 2
|
3月前
|
机器学习/深度学习 数据采集 算法
独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测研究(Python代码实现)
独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测研究(Python代码实现)
169 2
|
3月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
271 6
|
3月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
570 4
|
3月前
|
JavaScript 关系型数据库 MySQL
基于python的医院智慧门诊系统研究
本系统基于Python和Django框架,结合MySQL、Vue等技术,构建功能全面、易用性强的医院智慧门诊平台。系统涵盖患者与医务人员信息管理、在线挂号、智能导诊、电子病历、远程医疗等功能,优化就医流程,提升医疗效率与服务质量,助力医疗服务数字化转型。
基于python的医院智慧门诊系统研究
|
3月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
113 1

推荐镜像

更多