购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.9 边界值控制的迭代

现在,对求班级平均分问题进行扩展。以下是需求声明:

开发一个计算班级平均分的程序,该程序每次执行时可以处理任意数量的成绩。

需求声明没有说明成绩是什么或者是多少,所以我们会让用户自行输入成绩。该程序要处理任意数量的成绩。用户每次输入一个成绩,直到输入所有成绩,然后输入 边界值 (也称为信号值、虚拟值或标记值)以表示不再需要输入成绩。

应用边界值控制的迭代

下面的脚本使用边界值控制的迭代解决求班级平均分问题。需要注意的是,脚本中应该包含测试是否除以零的语句。如果漏检,可能会出现致命的逻辑错误。在第9章中,我们编写了能够识别此类异常并采取适当措施的程序。

000

边界值控制的迭代的程序逻辑

在边界值控制的迭代中,程序在到达 while 语句之前读取第一个值(第9行)。第9行输入的值确定程序的控制流程是否应该进入 while 套件(第12~14行)。如果第11行中的条件为 False ,表明用户直接输入了边界值( -1 )而没有输入任何 grade ,因此套件不会被执行。如果条件为 True ,则执行套件,将 grade 加到 total 中并使 grade_counter 加1。

接下来,第14行从用户输入得到下一个 grade ,并使用最新输入的 grade 再次测试条件(第11行)。在程序测试 while 条件之前,需要先输入 grade 的值,因此可以先判定刚刚输入的值是否为边界值,然后再决定是否将该值作为成绩处理。

当输入边界值 -1 时,循环终止,程序不会将 -1 加到 total 中。在上面的边界值控制的循环中,由于边界值由用户输入,因此每个提示信息(第9行和第14行)都应该提示用户边界值是多少。

使用两位小数格式化班级平均分

这个例子将班级平均分格式化为保留小数点后两位。在 f 字符串中,可以选择在替换文本表达式之后跟一个冒号( : )和一个 格式说明符 ,用来描述如何格式化替换文本。格式说明符“ .2f ”(第19行)将平均值格式化为浮点数( f )、保留小数点后两位( .2 )。在这个例子中,成绩的总和是257,当除以3时,会得到85.666666666...。用“ .2f ”格式化平均值会令其 四舍五入 到百分位,得到替换文本85.67。如果平均值的小数点的右侧只有一位小数,则会 在末尾补0 (例如,85.50)。第8章将会对字符串格式化的功能进行更加深入的讨论。 0VpQ0eJyPIOsCQfowkckh49zyjJ4FtvzGs4tZPeL8Cmoe8lnNu/F/qjQKiOeCdwq

点击中间区域
呼出菜单
上一章
目录
下一章
×