Coding for KidsCoding for Kids
创意关卡挑战教师指南
为功能投票
高级 Python 开发课程
第 章
>
第 级

数学模块
数学模块简介

目标

检查农场中的土地契约和产权界线,利用 Math 模块函数验证并计算数字。

在主楼最边缘的办公室中,有一个存有建筑和土地契约老旧蓝图的档案室。计划向东扩张农场,但在查看任何建设计划前,整理好所有文件非常重要。这将通过使用 python 的 math 模块来完成。

import math

就像之前的 statistics 模块一样,math 模块包含了一系列我们可以用来扩展 python 内置库的数学函数:

  • math.isnan(): 检查输入的值是否为非数字

  • math.isinf(): 检查输入的值是否为无限值

  • math.isfinite(): 检查输入的值是否为有限数

  • math.prod(): 将所有添加的参数相乘

  • math.pow(): 接受两个参数,返回第一个参数的第二个参数次方的值。

  • math.trunc(): 截断所提供的参数,即去掉浮点数的小数部分,使其成为整数。(不进行四舍五入,仅仅去除小数)

  • math.copysign(): 接受两个参数,将第二个参数的符号(-, +)复制给第一个参数。

  • math.factorial(): 接受一个参数,并计算从该数字开始到 1 的乘积。例如,如果值为 5,则计算:5 x 4 x 3 x 2 x 1 并得到结果。

我们将使用这些函数来审查并记录一些数据,为开发项目做准备。有三个列表常量存有农田草图,分别命名为:red_schematicsgreen_schematicsblue_schematics。这些草图中记载了非数字和不可用的值,需要使用数学函数来识别这些元素,找出可用的数据以便记录。

首先,走向红地毯上标记的暗色 X,并使用循环遍历 red_schematics 列表常量中的元素,以识别出可用的元素。

for x in red_schematics: y = math.isnan (float(x)) if y == True: player.speak("Not a Number") else: y = math.isinf(float(x)) if y == True: player.speak("Is infinite") else: player.speak(x)

该循环将遍历列表中的所有元素,math.isnan() 函数用来识别非数字条目,而 math.isinf() 用来识别不可用于数据收集的无限值。创建一个名为 red_values 的新列表,并使用列表推导式通过 math.isfinite() 过滤掉不需要的元素,如:red_values = [x for x in red_schematics if math.isfinite(float(x))]

接着,使用 math.prod() 函数将列表中的所有项相乘,例如:red_values = math.prod(red_values)

对绿色和蓝色地毯上标记的暗色 X,进行同样的过滤过程,分别使用 green_schematicsblue_schematics 列表常量,并将结果整合到分别命名为 green_valuesblue_values 的列表中。走向金色 X 标记,面向桌子,并使用编辑器中预设的 write() 函数记录下可用的草图数据。一旦一切就绪,走向浅色 X 标记,并使用 open() 函数进入下一房间。

进入下一房间后,有几张桌子上摆放着一些土地契约和坐标。在前往桥那边的新区域检查农场新增部分之前,记录一些数据是个好主意。走向第一张桌子旁、装有地图的箱子前的浅色 X 标记,使用 read() 函数获取土地契约的索引数据。

走向紫色地毯上标记的暗色 X,创建一个变量 purple_data 并使用 math.pow() 函数将所获取的数据进行乘方运算以获得坐标信息。将索引数据提升到 3 次方,例如:purple_data = math.pow( -index data- , 3 ),请确保加入之前读取的索引数据。使用 math.trunc() 移除变量中的小数部分,如:purple_data = math.trunc(purple_data)。完成后,在 X 标记处,使用编辑器中预设的 write() 函数将 purple_data 记录下来。

最后,走向靠近顶层桌子旁文件柜前的浅色 X 标记。再次使用 read() 函数获取索引数据,该数据需要解包以揭示更多关于土地坐标的信息。创建一个变量 white_data 来存储文件中找到的数据值,同时创建一个变量 sign 来存储文件中找到的符号数字。走向白色地毯上标记的暗色 X,使用这两个变量作为参数调用 math.copysign() 函数,并将结果赋值给 white_data,例如:white_data = math.copysign(white_data,sign)

完成后,利用 white_data 调用 math.factorial() 函数对索引进行乘积运算,将 white_data 转换为整数后传入函数,例如:white_data = math.factorial(int(white_data))。最后,使用预设的 write() 函数记录下 white_data,以完成本关任务。

代码书