练习4.1:比萨
想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用for循环将每种比萨的名称打印出来。
- 修改这个for 循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称。对于每种比萨都显示一行输出,如下所示。I like pepperoni pizza.
- 在程序末尾添加一行代码(不包含在for循环中),指出你有多喜欢比萨。输出应包含针对每种比萨的消息,还有一个总结性的句子,如下所示。I really love pizza!
41_pizzas.py
pizzas = ["sausage pizza", "cheese pizza", "beef pizza", "chicken pizza"]for pizza in pizzas:print(f"I like {pizza}.")print("I really love pizza!")
练习4.2:动物
想出至少三种有共同特征的动物,将其名称存储在一个列表中,再使用 for循环将每种动物的名称打印出来。
- 修改这个程序,使其针对每种动物都打印一个句子,如下所示。A dog would make a great pet.
- 在程序末尾添加一行代码,指出这些动物的共同之处,如打印下面这样的句子。Any of these animals would make a great pet!
42_animals.py
animals = ["狗", "猫", "马", "虎"]for animal in animals:print(f"{animal}是哺乳动物。")print("以上动物都是哺乳动物。")
练习4.3:数到20
43_twenty.py
for i inrange(1, 21):print(i, end=" ")
练习 4.4:100万
创建一个包含数1~1000000 的列表,再使用一个for 循环将这些数打印出来。(如果输出的时间太长,按Ctrl+C 停止输出,或关闭输出窗口。)
44_million.py
numbers = list(range(1, 1000001))for n in numbers:print(n)
练习4.5:100万求和
创建一个包含数1~1000000的列表,再使用min()和max()核实该列表确实是从1开始、到1 000 000 结束的。另外,对这个列表调用函数sum(),看看 Python 将100万个数相加需要多长时间。
45_million_sum.py
million = list(range(1, 1000001))print(min(million))print(max(million))print(sum(million))
练习4.6:奇数
通过给range()函数指定第三个参数来创建一个列表,其中包含1~20的奇数;再使用一个for循环将这些数打印出来。
46_odd_numbers.py
odd_numbers = list(range(1, 21, 2))for odd in odd_numbers:print(odd)
练习 4.7:3 的倍数
创建一个列表,其中包含 3~30内能被 3 整除的数,再使用一个for循环将这个列表中的数打印出来。
47_threes.py
threes = list(range(3, 31, 3))for three in threes:print(three)
练习 4.8:立方
将同一个数乘三次称为立方。例如,在 Python 中,2的立方用 2**3 表示。创建一个列表,其中包含前10个整数(1~10)的立方,再使用一个for循环将这些立方数打印出来。
48_cubes.py
cubes = []for n inrange(1, 11): cubes.append(n**3)for cube in cubes:print(cube)
练习4.9:立方推导式
使用列表推导式生成一个列表,其中包含前10个整数的立方。
49_cubes_comprehension.py
cubes = [value**3for value inrange(1, 11)]for cube in cubes:print(cube)
练习4.10:切片
选择你在本章编写的一个程序,在末尾添加几行代码,以完成如下任务。
- 打印消息“The first three items in the list are:”,再使用切片来打印列表的前三个元素。
- 打印消息“Three items from the middle of the list are:”,再使用切片来打印列表中间的三个元素。
- 打印消息“The last three items in the list are:”,再使用切片来打印列表末尾的三个元素。
410_slices.py
cubes = [value**3for value inrange(1, 10)]print(cubes)print(f"The first three items in the list are: {cubes[0:3]}")print(f"Three items from the middle of the list are: {cubes[3:6]}")print(f"The last three items in the list are: {cubes[6:9]}")
练习4.11:你的比萨,我的比萨
在你为练习4.1编写的程序中,创建比萨列表的副本,并将其赋给变量 friend_pizzas,再完成如下任务。
- 在列表 friend_pizzas中添加另一种比萨。
- 核实有两个不同的列表。为此,打印消息“My favorite pizzas are:”,再使用一个for 循环来打印第一个列表;打印消息“My friend's favorite pizzas are:”,再使用一个for 循环来打印第二个列表。核实新增的比萨被添加到了正确的列表中。
411_my_you_pizzas.py
my_pizzas = ["sausage pizza", "cheese pizza", "beef pizza", "chicken pizza"]friend_pizzas = my_pizzas[:]my_pizzas.append("seafood pizza")friend_pizzas.append("pepperoni pizza")print("My favorite pizzas are: ")for p in my_pizzas:print(p)print("My friend's favorite pizzas are: ")for p in friend_pizzas:print(p)
练习4.12:使用多个循环
在本节中,为节省篇幅,程序 foods.py 的每个版本都没有使用 for循环来打印列表。请选择一个版本的 foods.py,在其中编写两个for循环,将各个食品列表都打印出来。
412_foods.py
my_foods = ["pizza", "falafel", "carrot cake"]friend_foods = my_foods[:]my_foods.append("cannoli")friend_foods.append("ice cream")print("My favorite foods are:")for food in my_foods:print(food)print("\nMy friend's favorite foods are:")for food in friend_foods:print(food)
练习4.13:自助餐
有一家自助式餐馆,只提供5种简单的食品。请想出5种简单的食品,并将其存储在一个元组中。
- 使用一个for循环将该餐馆提供的5 种食品都打印出来。
- 尝试修改其中的一个元素,核实 Python 确实会拒绝你这样做。
- 餐馆调整菜单,替换了两种食品。请编写一行给元组变量赋值的代码,并使用一个for循环将新元组的每个元素都打印出来。
413_buffet.py
foods = ('煎蛋','肉包','面包','白粥' ,'西瓜')for food in foods:print(food)# 修改元组元素# foods[3]='南瓜粥'foods=('煎蛋','肉包','面包','南瓜粥' ,'香蕉')for food in foods:print(food)
修改元组元素报错

练习 4.14: PEP 8
请访问 Python 官方网站并搜索“PEP 8 — Style Guide for Python Code”,阅读 PEP8 格式设置指南。你当前不太能用到它,但是最好先大致浏览一下。
英文版: https://peps.python.org/pep-0008/中文翻译版:https://peps.pythonlang.cn/pep-0008/
练习 4.15:代码审核
从本章编写的程序中选择三个,根据 PEP8 对它们进行修改。
- 每级缩进都使用4个空格。对你使用的文本编辑器进行设置,使其在你按Tab 键时插入4个空格。如果你还没有这样做,现在就去做吧(有关如何设置,请参阅附录B)。
- 每行都不要超过80个字符。对你使用的编辑器进行设置,使其在第 80个字符处显示一条竖直的参考线。
- Tab键转空格:
文件-首选项-设置-Editor: Tab Size - 80字符参考线:
文件-首选项-设置-Editor: Rulers