《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天前
|
数据采集 NoSQL 中间件
python-scrapy框架(四)settings.py文件的用法详解实例
python-scrapy框架(四)settings.py文件的用法详解实例
8 0
|
3天前
|
算法 调度 Python
【Python】可再生能源发电与电动汽车的协同调度策略研究
【Python】可再生能源发电与电动汽车的协同调度策略研究
|
5天前
|
数据可视化 Python
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
|
5天前
|
机器学习/深度学习 存储 算法
Python套索回归lasso、SCAD、LARS分析棒球运动员薪水3个实例合集|附数据代码
Python套索回归lasso、SCAD、LARS分析棒球运动员薪水3个实例合集|附数据代码
|
11天前
|
数据可视化 Python
Python用 PyMC3 贝叶斯推理案例研究:抛硬币和保险索赔发生结果可视化
Python用 PyMC3 贝叶斯推理案例研究:抛硬币和保险索赔发生结果可视化
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据分析领域的应用研究
Python在数据分析领域的应用研究
22 0
|
12天前
|
机器学习/深度学习 算法 数据挖掘
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
|
12天前
|
机器学习/深度学习 算法 搜索推荐
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(上)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例
|
15天前
|
数据可视化 算法 量子技术
qutip,一个高级的 Python 量子力学研究库!
qutip,一个高级的 Python 量子力学研究库!
25 0
|
15天前
|
人工智能 安全 数据安全/隐私保护
Python中多种生成随机密码超实用实例
Python中多种生成随机密码超实用实例
9 0