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

数学模块
运算符模块

目标

使用 operator 模块验证并分配新农田建设材料订单。

附属建筑的楼上有一些办公室,用以记录新土地开发所需建设材料的库存和订单。除了数学和统计模块外,我们还可以使用 operator 模块来验证和计算材料,以便用于建设。

这个模块, import operator, 可用于简化运算符计算,并能方便地将其打包成函数。你可以使用这些函数既进行优化,也能生成数值而无需创建对象来存储计算结果。

  • operators.eq(): 接受两个参数,检查这两个参数是否相等。
  • operators.lt(): 接受两个参数,检查第一个参数是否小于第二个参数。
  • operators.gt(): 接受两个参数,检查第一个参数是否大于第二个参数。
  • operators.floordiv(): 接受两个参数,将第一个参数除以第二个参数,并执行相当于 math.floor() 的操作,向下取整结果。
  • operators.mod(): 接受两个参数,返回两个参数相除的余数。
  • operators.contains(): 此函数用于列表,接受两个参数,第一个参数为列表,第二个为希望检查是否存在于列表中的值。返回值为:truefalse,取决于该值是否存在。
  • operators.concat(): 接受两个列表参数,使用一个简单的函数将两个列表合并在一起,比其他方法更清爽。
  • operators.countOf(): 接受两个参数,一个列表和一个值,用于检查该值在列表中出现的次数。返回值为该值出现的次数。

首先,走向标有深色 X 的红色、蓝色和绿色地毯。这里有六个 (6) 常量:red_orderblue_ordergreen_order,它们代表材料订单;以及 red_reqblue_reqgreen_req,它们代表建设所需的材料数量。

在红色地毯上标有深色 X 的位置,使用 read() 函数检查所需材料的数量。创建一个名为 red_verification 的变量,并使用 operator.eq() 函数与 red_orderred_req 常量,如下所示:red_verification = operator.eq(red_order,red_req)。使用预写的 write() 函数利用 red_verification 显示结果。

在蓝色和绿色地毯上标有深色 X 的位置,重复相同的步骤,使用 read() 函数并创建变量:blue_verificationgreen_verification。对于蓝色变量,将存储 operator.lt() 的值,使用 blue_orderblue_req 常量检查订单是否少于需求;对于绿色变量,将存储 operator.gt() 的值,使用 green_ordergreen_req 常量检查订单是否多于所需材料。使用预写的 write() 函数与相应颜色地毯对应的验证函数显示结果。

接下来,走向标有浅色 X 的位置,在桌子上使用 read() 函数检查已下订单且正在运输的订单。在订单簿中,你会发现两个变量常量的值:main_ordersub_order,以及材料需要分成的截数。阅读订单簿后,创建一个名为 allocations 的变量,并存储 operator.floordiv() 的值,将 main_order 的值除以订单簿中描述的截数,如下所示:allocations = operator.floordiv(main_order, -add sections-);此操作将订单分割并向下取整结果。使用预写的 write() 函数与 allocations 变量记录结果。

走向标有金色 X 的位置,创建一个变量 remainder,将 operator.mod() 的结果存入该变量,同时将 main_ordersub_order 常量相加,得到两个订单的余数。然后在桌子上,使用预写的 write() 函数和 remainder 变量记录结果。

接下来走向紫色地毯上标有深色 X 的位置,这里我们将验证建设所需工具的交付情况。我们有两个列表常量,delivery_1delivery_2,我们将检查工具是否在第一次交付中送达。创建一个名为 tools 的变量,并存储 operator.contains() 的结果,第一个参数放入 delivery_1 列表,第二个参数为字符串 "tools"。这将检查交付中是否包含工具,如下所示:tools = operator.contains(delivery_1,"tools")。完成后,在桌子上使用预写的 write() 函数和 tools 变量记录工具是否已成功交付。

接下来检查所有交付情况,走向标有深色 X 的白色地毯上,并创建一个名为 materials 的列表。使用它存储 operator.concat() 的值,将 delivery_1delivery_2 两个列表作为参数传入。此操作会迅速将两个列表合并为一个单一列表。在桌子上,使用预写的 write() 函数和 materials 变量记录已交付的全部建设材料。

最后,走向标有深色 X 的橙色地毯上,这里有一些开始建设前的先决条件,其中一个主要说明是启动时所需的木材吨数。检查整个交付中送达了多少木材,并作出公告,使用 speak() 函数配合 operator.countOf() 函数。第一个参数传入你创建的 materials 列表,接着传入字符串 "wood",这将返回 materials 列表中木材的出现次数。这说明了operator函数可以独立使用而无需将值存储在对象中,如下所示:player.speak(operator.countOf(materials,"wood"))。这将完成该关卡。

代码书