《Python编程:从入门到实践》第六章练习题
《Python编程:从入门到实践》第六章练习题
6-1 人
使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键 first_name 、 last_name 、 age 和 city 。将存储在该字典中的每项信息都打印出来。
代码:
human = {'first_name': 'San', 'last_name': 'Zhang', 'age': 22, 'city': "Shenzhen"}
for key, value in human.items():
print("\nKey: " + key)
print("Value: " + str(value))
6-2 喜欢的数字
使用一个字典来存储一些人喜欢的数字。请想出 5 个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。
代码:
favorite_number = {'Bob': 1, 'Jack': 2, 'Alice': 3, "John": 4, "Tom": 5}
for key, value in favorite_number.items():
print(key + " like " + str(value))
6-3 词汇表
Python 字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
- 想出你在前面学过的 5 个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
- 以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n )插入一个空行,然后在下一行以缩进的方式打印词汇的含义。
代码:
vocabulary = {'accumulator': '累加器', 'algorithm': '算法', 'array': '数组', 'branch': '分支', 'breakpoint': '断点'}
for word, meaning in vocabulary.items():
print(word + ":" + meaning)
6-4 词汇表 2
既然你知道了如何遍历字典,现在请整理你为完成练习 6-3 而编写的代码,将其中的一系列 print 语句替换为一个遍历字典中的键和值的循环。确定该循环正确无误后,再在词汇表中添加 5 个 Python 术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
代码:
vocabulary = {}
vocabulary['accumulator'] = '累加器'
vocabulary['algorithm'] = '算法'
vocabulary['array'] = '数组'
vocabulary['branch'] = '分支'
vocabulary['breakpoint'] = '断点'
for word, meaning in vocabulary.items():
print(word + ":" + meaning)
6-5 河流
创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键 —值对可能是’nile’: ‘egypt’ 。
- 使用循环为每条河流打印一条消息,如“ The Nile runs through Egypt. ”。
- 使用循环将该字典中每条河流的名字都打印出来。
- 使用循环将该字典包含的每个国家的名字都打印出来。
代码:
rivers = {'nile': 'egypt', 'amazon river': 'bizarre', 'yangtze river': 'china'}
for key, value in rivers.items():
print("The " + key.title() + " runs through " + value.title() + ".")
print("\n")
for key in rivers.keys():
print(key.title())
print("\n")
for value in rivers.values():
print(value.title())
6-6 调查
在 6.3.1 节编写的程序 favorite_languages.py 中执行以下操作。
- 创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
- 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
代码:
favorite_language = {'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python'}
names = ['jen', 'tim', 'phil', 'candy']
for name in names:
if name in favorite_language.keys():
print("Dear " + name.title() + ", Thank you for involving in this search!")
else:
print("Hi, " + name.title() + "! Would you want to participate in an interesting search?")
6-7 人
在为完成练习 6-1 而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为 people 的列表中。遍历这个列表,将其中每个人的所有信息都打印出来。
代码:
person1 = {'first_name': 'San', 'last_name': 'Zhang', 'age': 22, 'city': "Shenzhen"}
person2 = {'first_name': 'Si', 'last_name': 'Li', 'age': 68, 'city': "Beijing"}
person3 = {'first_name': 'Wu', 'last_name': 'Wang', 'age': 6, 'city': "Shanghai"}
people = [person1, person2, person3]
for person in people:
name = person['last_name'] + person['first_name']
print("\nName: " + name)
print("Age: " + str(person['age']))
print("City: " + person['city'])
6-8 宠物
创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为 pets 的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
代码:
pet1 = {'name': 'Alice', 'variety': 'cat', 'owner_name': 'Amy'}
pet2 = {'name': 'Bob', 'variety': 'dog', 'owner_name': 'John'}
pet3 = {'name': 'Candy', 'variety': 'bird', 'owner_name': 'Mike'}
pets = [pet1, pet2, pet3]
for pet in pets:
print("\nName: " + pet['name'])
print("Variety: " + pet['variety'])
print("Owner name: " + pet['owner_name'])
6-9 喜欢的地方
创建一个名为 favorite_places 的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的 1~3 个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
代码:
favorite_places = {'alice': ['Beijing', 'Shenzhen'], 'bob': [], 'candy': ['Shanghai']}
for name, places in favorite_places.items():
if len(places) == 1:
print("\n" + name.title() + "'s favorite place is: ")
for place in places:
print("\t" + place.title())
elif len(places) > 1:
print("\n" + name.title() + "'s favorite places are: ")
for place in places:
print("\t" + place.title())
else:
print("\n" + name.title() + " does not have a favorite place.")
6-10 喜欢的数字
修改为完成练习 6-2 而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来。
代码:
favorite_number = {'Bob': [1, 2, 3], 'Jack': [4, 5, 6], 'Alice': [7, 8, 9]}
for key, values in favorite_number.items():
print("\n" + key + " like: ")
for value in values:
print("\t" + str(value))
6-11 城市
创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含 country 、 population 和 fact 等键。将每座城市的名字以及有关它们的信息都打印出来。
代码:
cities = {
'beijing': {
'country': 'china',
'population': '2188.6万',
'fact': '北京城市的减量发展和大规模的生态环境建设为世界展现了一座高品质绿色宜居城市'
},
'paris': {
'country': 'french',
'population': '224万',
'fact': '巴黎都会区人口约为1100万,占据全国人口的六分之一'
},
'tokyo': {
'country': 'japan',
'population': '1350万',
'fact': '东京是日本首都,位于日本关东平原中部'
},
}
for city_name, city_info in cities.items():
print("\nCity name: " + city_name)
print("\tpopulation: " + city_info['population'])
print("\tfact: " + city_info['fact'])
6-12 扩展
本章的示例足够复杂,可以以很多方式进行扩展了。请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问题或改进输出的格式。
略。