4.2.5 遗漏了冒号
for 语句末尾的冒号告诉Python,下一行是循环的第一行。 magicians = ['alice', 'david', 'carolina'] ❶ for magician in magicians print(magician) 如果不小心遗漏了冒号,如❶所示,将导致语法错误,因为Python不知道你意欲何 为。这种错误虽然易于消除,但并不那么容易发现。程序员为找出这样的单字符错 误,花费的时间多得令人惊讶。此类错误之所以难以发现,是因为通常在人们的意 料之外。动手试一试 练习4-1:比萨 想出至少三种你喜欢的比萨,将其名称存储在一个列表中, 再使用for 循环将每种比萨的名称打印出来。 修改这个for 循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名 称。对于每种比萨,都显示一行输出,下面是一个例子。 I like pepperoni pizza. 在程序末尾添加一行代码,它不在for 循环中,指出你有多喜欢比萨。输 出应包含针对每种比萨的消息,还有一个总结性句子,下面是一个例子。 I really love pizza! 练习4-2:动物 想出至少三种有共同特征的动物,将其名称存储在一个列表 中,再使用for 循环将每种动物的名称打印出来。 修改这个程序,使其针对每种动物都打印一个句子,下面是一个例子。 A dog would make a great pet. 在程序末尾添加一行代码,指出这些动物的共同之处,如打印下面这样的 句子。 Any of these animals would make a great pet!
4.3 创建数值列表
需要存储一组数的原因有很多。例如,在游戏中,需要跟踪每个角色的位置,还可 能需要跟踪玩家的几个最高得分;在数据可视化中,处理的几乎都是由数(如温 度、距离、人口数量、经度和纬度等)组成的集合。 列表非常适合用于存储数字集合,而Python提供了很多工具,可帮助你高效地处理 数字列表。明白如何有效地使用这些工具后,即便列表包含数百万个元素,你编写 的代码也能运行得很好。
4.3.1 使用函数range()
Python函数range() 让你能够轻松地生成一系列数。例如,可以像下面这样使用函 数range() 来打印一系列数: first_numbers.py for value in range(1, 5): print(value) 上述代码好像应该打印数1~5,但实际上不会打印5: 1 2 3 4 在这个示例中,range() 只打印数1~4。这是编程语言中常见的差一行为的结果。 函数range() 让Python从指定的第一个值开始数,并在到达你指定的第二个值时停 止。因为它在第二个值处停止,所以输出不包含该值(这里为5)。 要打印数1~5,需要使用range(1,6) : for value in range(1, 6): print(value) 这样,输出将从1开始、到5结束: 1 2 3 4 5使用range() 时,如果输出不符合预期,请尝试将指定的值加1或减1。 调用函数range() 时,也可只指定一个参数,这样它将从0开始。例如, range(6) 返回数0~5。
4.3.2 使用range() 创建数字列表
要创建数字列表,可使用函数list() 将range() 的结果直接转换为列表。如果将 range() 作为list() 的参数,输出将是一个数字列表。 在前一节的示例中,只是将一系列数打印出来。要将这组数转换为列表,可使用 list() : numbers = list(range(1, 6)) print(numbers) 结果如下: [1, 2, 3, 4, 5] 使用函数range() 时,还可指定步长。为此,可给这个函数指定第三个参数, Python将根据这个步长来生成数。 例如,下面的代码打印1~10的偶数: even_numbers.py even_numbers = list(range(2, 11, 2)) print(even_numbers)
在这个示例中,函数range() 从2开始数,然后不断加2,直到达到或超过终值 (11),因此输出如下: [2, 4, 6, 8, 10] 使用函数range() 几乎能够创建任何需要的数集。例如,如何创建一个列表,