高级 Python 开发课程
第 章
>
第 级
高级函数
多态函数
在本章中,我们将探索新的函数类型、它们的各种用途以及如何在使用 Python 编程时充分发挥它们的优势。
在本关中,我们首先学习多态函数——即可以用于多种不同数据类型的函数。这就像是使用同一个函数执行不同的操作,也是一种通用函数。

目标
检查作物和猪仔的状态,并使用多态函数确认供应发货情况。
很快将会有一些作物需要收割,然后运出去销售。猪仔们也需要送食物,所以最好了解一下需要订购多少食物。为完成这些任务,你可以使用多态函数,在本例中我们将使用 len() 函数。
多态函数是可以用于多种不同数据类型的函数。例如,len() 函数用于计算对象的长度,这些对象可以是不同的数据类型,如列表、字典甚至字符串。首先,从田地中下方的 X 记号开始计数,然后再移动到棚子中上方的 X 记号处。
路边的围栏内有几只猪仔,它们的名字分别是 "Peggle"、"Peter"、"Piper"、"Pedro",将它们的名字放入一个列表中,以便你进行计数。示例如下: piglets = ["Peggle", "Peter", "Piper", "Pedro"] 。
创建一个名为 number 的变量,使用 len() 函数存储该列表的长度,如下所示: number = len(piglets)
设置好列表和变量后,走到猪仔围栏前那个深色的 X 记号处,面向围栏,并使用 speak() 函数来数一数猪仔的数量。使用变量 number 得到结果,如下所示: player.speak("There are d% Piglets" % (number) )
在检查完猪仔之后,走到田边那个浅色的 X 记号处,面向作物并对它们进行计数。有三(3)种不同类型的作物:"Tomatoes"、"Pumpkins"、"Eggplant"。分别计数每种作物的数量,并将它们存储在一个字典中,如下所示:
crops = {} crops["Tomato"] = number of tomato crops crops["Pumpkin"] = number of Pumpkin crops crops["Eggplant"] = number of Eggplant crops
一旦你用正确的数值填充了字典,就使用 speak() 函数结合 len() 函数计算出可用作物的种类数,如下所示: player.speak("There are d% types of crops" % ( len(crops) ) ) .
在你完成对猪仔和作物的计数后,走到紫垫子上那个深色的 X 记号处,检查需要发运的作物订单。有一个名为 order 的常量变量,其中包含了需要发运作物订单的字符串。我们需要找出订单的内容以及订单的数量,可以通过使用 speak() 函数解包字符串并结合使用 len() 函数来实现。
player.speak( [*order] ) player.speak("There are d% orders of crops going out" % ( len(order) ) )
通过将字符串变量放在方括号内并加上 *,我们可以激活一个操作符来解包字符串。例如: [*string]。这样做会把字符串中的每个字符分开,并放入一个列表中,例如: [*string] 将输出列表 ['s', 't', 'r', 'i', 'n', 'g']。而对字符串使用 len() 函数时,则会计算该字符串中的字符数量。
最后,为结束此练习,走到棚子右侧金色的 X 记号处,确定为猪仔送食物需要多少磅。创建一个名为 food 的变量,其值为之前创建的变量 number 乘以 35,以确定所需的磅数,如下所示: food = number * 35 。
在面向棚子的同时,使用 speak() 函数结合变量 food 来显示送达食物的数量,如下所示: player.speak("There are d% pounds of food coming in" % (food) ) .