Python编程:从入门到实践(埃里克·马瑟斯) 第二~四章部分习题

练习 2-8:数字 8 编写四个表达式,分别使用加法、减法、乘法和除法运算,但结果都是数字 8。为使用函数调用 print()来显示结果,务必将这些表达式用圆括号括 起来。

print(5 + 3)
print(9 - 1)
print(2 * 4)
print(32 // 4)  # “//”表示整数除法,返回商的整数部分(向下取整)

练习 3-4:嘉宾名单 如果你可以邀请任何人一起共进晚餐(无论是在世的还是故 去的),你会邀请哪些人?请创建一个列表,其中包含至少三个你想邀请的人,然后使 用这个列表打印消息,邀请这些人来与你共进晚餐。

练习 3-5:修改嘉宾名单 你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。

  • 以完成练习3-4时编写的程序为基础,在程序末尾添加一条print语句,指出哪位嘉宾无法赴约。
  • 修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。
  • 再次打印一系列消息,向名单中的每位嘉宾发出邀请
persons = ['tom', 'tim', 'pat']

for person in persons:
    print(f"{person.title()}, I want to invite you to have dinner with you!")

print(f"{person[0]} can't come.")

persons[0] = 'ryan'

for person in persons:
    print(f"{person.title()}, I want to invite you to have dinner with you!")

练习 3-6:添加嘉宾 你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你 还想邀请哪三位嘉宾。

  • 以完成练习 3-4 或练习 3-5 时编写的程序为基础,在程序末尾添加一条 print 语 句,指出你找到了一个更大的餐桌。
  • 使用 insert()将一位新嘉宾添加到名单开头。
  • 使用 insert()将另一位新嘉宾添加到名单中间。
  • 使用 append()将最后一位新嘉宾添加到名单末尾。
print(f"I find a bigger table !")

# 使用 insert()将一位新嘉宾添加到名单开头。
persons.insert(0, 'Xiao ming')

# 使用insert()将一位新嘉宾添加到名单中间。
persons.insert(2, 'Xiao hong')

# 使用insert()将一位新嘉宾添加到名单末尾。
persons.append('Xiao le')

# 打印一系列消息,向名单中的每位嘉宾发出邀请。
for person in persons:
    print(f"{person.title()}, I want to invite you to have dinner with you!")

练习 3-7:缩减名单 你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。

  • 以完成练习 3-6 时编写的程序为基础,在程序末尾添加一行代码,打印一条你只 能邀请两位嘉宾共进晚餐的消息。
  • 使用 pop()不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹 出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进 晚餐。
  • 对于余下两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。
  • 使用 del 将最后两位嘉宾从名单中删除,让名单变成空的。打印该名单,核实 程序结束时名单确实是空的。
print(f"Only two guests can be invited to have dinner.")
# 使用 pop()不断地删除名单中的嘉宾,直到只有两位嘉宾为止。
while len(persons) > 2:
    print(persons.pop() + ", I can't invite you to have dinner with me.")

# 对于余下的两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。
for person in persons:
    print(person + ', you are still invited.')

# 使用 del 将最后两位嘉宾从名单中删除,让名单变成空的。打印该名单,核实程序结束时名单确实是空的。
del persons[0]
del persons[0]

print(persons)

练习 3-8:放眼世界 想出至少 5 个你渴望去旅游的地方。

# 将这些地方存储在一个列表中,并确保其中元素不是按字母顺序排序的
city = ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou']

# 按原始排列顺序打印该列表
print(city)

# 使用sorted()按字母顺序打印这个列表,同时不要修改它
print(sorted(city))

# 再次打印该列表,核实排列顺序未改变
print(city)

# 使用sorted()按字母顺序相反的顺序打印这个列表,同时不要修改它
print(sorted(city, reverse=True))

# 再次打印该列表,核实排列顺序未改变
print(city)

# 使用reserve()修改列表元素的排列顺序。打印该列表
city.reverse()
print(city)

# 使用reserve()再次修改列表元素的排列顺序。打印该列表
# 核实已经恢复到原来的排列顺序
city.reverse()
print(city)

# 使用sort()按字母顺序打印这个列表
city.sort()
print(city)

# 使用sort()按字母顺序相反的顺序打印这个列表
city.sort(reverse=True)
print(city)

# sorted(city)不改变原列表; city.sort() city.reverse()改变原列表

练习 4-5:一百万求和 创建一个包含数 1~1 000 000的列表,再使用 min()和 max() 核实该列表确实是从 1 开始、到 1 000 000 结束的。另外,对这个列表调用函数 sum(), 看看 Python 将一百万个数相加需要多长时间。

import time
numbers = list(range(1, 1000001))
print(min(numbers))
print(max(numbers))
start_time = time.time()  # 记录程序开始运行时间
sum(numbers)
end_time = time.time()  # 记录程序结束运行时间
print('cost %f second' % (end_time - start_time))
print(sum(numbers))

练习 4-7:3 的倍数 创建一个列表,其中包含 3~30 能被 3 整除的数,再使用一 个 for 循环将这个列表中的数打印出来。 

# 版本1
numbers = list(range(3,31,3))
for number in numbers:
    print(number)

# 版本2
numbers = list(range(3, 31))
for number in numbers:
    if number % 3 == 0:
        print(number)

 练习 4-8:立方 将同一个数乘三次称为立方。例如,在 Python 中,2 的立方用 2**3 表示。请创建一个列表,其中包含前 10 个整数(1~10)的立方,再使用一个 for 循环将这些立方数打印出来。

numbers = []
for number in range(1, 11):
    numbers.append(number ** 3)

for number in numbers:
    print(number)

 练习 4-9:立方解析 使用列表解析生成一个列表,其中包含前 10 个整数的立方。

numbers = [number**3 for number in range(1, 11)]
print(numbers)

练习 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:”,再使用切片来打印列表的末尾三 个元素。
# 使用切片来打印列表的前三个元素。
players = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
print('The first three items in the list are:')
print(players[0:3])

# 使用切片来打印列表中间的三个元素。
print('Three items from the middle of the list are:')
print(players[2:5])

# 使用切片来打印列表末尾的三个元素。
print('The last three items in the list are:')
print(players[-3:])

 练习 4-11:你的比萨,我的比萨 在你为完成练习 4-1 而编写的程序中,创建比萨 列表的副本,并将其赋给变量 friend_pizzas,再完成如下任务。

  • 在原来的比萨列表中添加一种比萨。
  • 在列表 friend_pizzas 中添加另一种比萨。
  • 核实有两个不同的列表。为此,打印消息“My favorite pizzas are:”,再使用一个 for 循环来打印第一个列表;打印消息“My friend’s favorite pizzas are:”,再使用 一个 for 循环来打印第二个列表。核实新增的比萨被添加到了正确的列表中。
pizzas = ['A pizza', 'B pizza', 'C pizza']

# friend_pizzas = pizzas  该语法让两个列表相关联,这两个变量指向同一个列表
friend_pizzas = pizzas[:]

# 在原来的pizza列表中添加一种披萨。
pizzas.append('D pizza')

# 在friend_pizzas列表中添加零一种披萨。
friend_pizzas.append('E pizza')


print('My favorite pizzas are:')
for pizza in pizzas:
    print(pizza)

print("My friend's favorite pizzas are:")
for friend_pizza in friend_pizzas:
    print(friend_pizza)

练习 4-13:自助餐 有一家自助式餐馆,只提供五种简单的食品。请想出五种简单 的食品,并将其存储在一个元组中。

  • 使用一个 for 循环将该餐馆提供的五种食品都打印出来。
  • 尝试修改其中的一个元素,核实 Python 确实会拒绝你这样做。
  • 餐馆调整了菜单,替换了它提供的其中两种食品。请编写一个这样的代码块: 给元组变量赋值,并使用一个 for 循环将新元组的每个元素都打印出来。
foods = ('A', 'B', 'C', 'D', 'E')

# 使用for循环打印出来。
for food in foods:
    print(food)

# 元组不可修改。
'''
foods[0] = 'F'
'''

# 虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组
foods = ('A', 'B', 'G', 'H', 'I')
for food in foods:
    print(food)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值