高级 Python 开发课程
第 章
>
第 级

数学模块
数学模块扩展

目标

使用 math 模块导入的更多函数来计算农场的新土地扩展面积。

过桥后,附属建筑中设有一些办公室,用于勘测连接农场两个不同区域的未划编土地。在这里,我们将会找到一些土地的尺寸和测量数据,对这些数据进行排序并记录下来是个不错的主意。你可以通过使用 math 模块来实现这一目标,在这一关中我们将介绍一组可以用来处理数据的新函数。你仍然使用相同的 import math 和在函数前加上 math. 来调用这一组函数:

  • math.radians(): 将角度转换成弧度。
  • math.floor(): 将数字向下取整为一个基准数。
  • math.ceil(): 将数字向上取整为一个较高的数。
  • math.atan2(): 返回两个数字之间的反正切值(以弧度表示)。
  • math.isclose(): 检查两个数字是否彼此接近,返回 true/false。
  • math.fsum(): 将列表或可迭代对象中的浮点数(小数)相加。
  • math.dist(): 计算两点之间的距离,参数需要是列表或可迭代对象。

开始通过走向红色和蓝色地毯上标有 X 的光点来从图表中收集原始数据。使用 read() 函数获取所需的原始尺寸数据。这些测量数据已存储在四个常量变量中,分别命名为:red_xred_yblue_xblue_y

在确认两组数据后,走向橙色地毯上标有暗 X 的位置,并面向桌子。使用 math.radians()math.ceil()blue_xblue_y 变量转换为弧度并将它们向上取整。使用 float() 确保这些常量为可编辑的小数。例如,对于 blue_x 变量:先转换为弧度 blue_x = math.radians(float(blue_x)),再对该值向上取整 blue_x = math.ceil(float(blue_x))。在此 X 点上,对 blue_y 同样操作。完成后,使用预先编写好的 write() 函数,将 blue_xblue_y 变量记录下来。

走向绿色地毯上标有暗 X 的位置,使用 math.radians()math.floor()red_xred_y 变量转换为弧度并将它们向下取整。例如,对于 red_x 变量:先转换为弧度 red_x = math.radians(red_x),再对 red_x 进行向下取整 blue_x = math.floor(red_x)。在此 X 点上,对 red_y 也同样操作。完成后,使用预先编写好的 write() 函数,将 red_xred_y 变量记录下来。

走向金色 X 点并面向桌子,在这里我们将创建两个新变量,data_adata_b。我们将使用 math.atan2 函数来存储每组数据的反正切值。对于 data_a,我们使用 blue_xblue_y 变量,如下所示:data_a = math.atan2(blue_x,blue_y)。对于 data_b,则使用 red_xred_y。完成后,使用预先编写好的 write() 函数,将 data_adata_b 变量记录下来。

完成下面部分的操作后,走向紫色地毯上标有暗 X 的位置,创建一个名为 comparison 的变量,并使用 math.isclose() 函数对 data_adata_b 进行比较,如下所示:comparison = math.isclose(data_a, data_b)。在此 X 点上,使用预先编写好的 write() 函数,将 comparison 变量记录下来。

走到白色地毯上标有 X 的位置,创建一个名为 data_list 的列表,并按顺序将 data_adata_b 添加进去。创建一个名为 total 的变量,并使用 math.fsum() 函数将 data_list 作为参数调用,如下所示:total = math.fsum(data_list)。在此 X 点上,使用预先编写好的 write() 函数,将 total 变量记录下来。

走向黄色地毯上标有暗 X 的位置并面向桌子,将 data_adata_b 转换为单个列表形式,例如对于 data_a 执行:data_a = [data_a]。对 data_b 也做同样操作,以便将两个变量转换为可迭代对象,以供 math.dist() 函数使用。创建一个名为 distance 的变量,并用它存储 math.dist() 的返回值,传入 data_adata_b 作为参数。最后,使用预先编写好的 write() 函数,将 distance 变量记录下来,从而完成本关任务。

代码书