本节和下一节将求解两个班级平均成绩的问题。以下是需求声明:
一个班有十个学生参加了一个测验。它们的成绩(0~100的整数)分别是98、76、71、87、83、90、57、79、82、94,要求计算班级的平均成绩。
下面用于解决该问题的脚本会使用循环求出成绩的总和,然后计算出平均值并显示结果。该脚本将10个成绩放在一个列表中,当然也可以让用户在键盘上输入这些成绩(下一个示例会使用这种方式)或从文件中读取它们(第9章会介绍如何操作)。除此之外,我们还将在第16章介绍如何从SQL和NoSQL数据库中读取数据。
第5~6行创建变量 total 和 grade_counter ,并将两个变量都初始化为0。第7行
创建变量 grades 并使用包含10个整数成绩的列表对其进行初始化。
for 语句依次处理列表 grades 中的每个 grade 。第11行将当前的 grade 值加到 total 中,然后,第12行将变量 grade_counter 加1,记录到目前为止已经处理的成绩数量。当处理完列表中的所有10个成绩时,迭代终止。 Style Guide for Python Code 建议在每个控制语句的上方和下方放置一个空行,如第8行和第13行所示。当 for 语句执行结束后,第15行计算成绩的平均值,第16行显示计算结果。在本章后面的部分中,我们将介绍如何使用函数式编程来更加简洁地计算列表项的平均值。
格式化字符串简介
第16行中使用了如下所示的 f 字符串(formatted string,即 格式化字符串 )将 average 的值插入字符串中,以此来格式化脚本的输出结果:
字符串开头的引号前的字母 f 表示它是一个 f 字符串。可以使用由花括号( { 和 } )分隔的 占位符 指定插入值的位置。占位符先将变量 average 的值转换为以字符串形式表示的 替换文本 ,然后用该替换文本替换 {average} 。替换文本表达式可以包含值、变量或其他表达式,例如计算或函数调用。在第16行中,可以使用 total/grade_counter 代替 average ,从而能够省略第15行。