课后习题
动手试一试
6-1 人 :使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name 、last_name 、age 和city 。将存储在该字典中 的每项信息都打印出来。familiar_person = { 'first_name' : 'Jack', 'last_name' : 'Wang', 'age' : '30', 'city' : 'ShangHai' } print(familiar_person)
6-2 喜欢的数字 :使用一个字典来存储一些人喜欢的数字。请想出5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。
friends_numbers = { 'jack' : '6', 'tom' : '7', 'angel' : '30', 'kitty' : '1', 'jerry':'10' } print(friends_numbers)
6-3 词汇表 :Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n )插入一个空行,然后在下一行以缩进的方式打印词汇的含义。
vocabulary ={ 'P':'Python', 'J':'Java', 'C':'C', 'V':'Visual Basic', } for key,value in vocabulary.items(): print(key + "'s vocabulary is " +value)
6-5 河流 :创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是'nile': 'egypt' 。
使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”。
使用循环将该字典中每条河流的名字都打印出来。
使用循环将该字典包含的每个国家的名字都打印出来。
river = { 'nile':'egypt', 'yellow river':'lanchow', 'Mississippi River':'north America' } for key,value in river.items(): print(key + " runs in the " + value + ".")
6-6 调查 :在6.3.1节编写的程序favorite_languages.py中执行以下操作。
创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
favourite_language = { 'jen':'python', 'sarah':'c', 'edward':'ruby', 'phil':'python', } researchs = ['jen','sarah','jack','peter'] for research in researchs: if research in favourite_language.keys(): print("Thank you, " + research + " attend the meeting.") else: print("I will invite " +research + " attend the meeting." )
6-7 人 :在为完成练习 6-1 而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为 people 的列表中。遍历这个列表,将其中每个人的所有信息都打印出来。
person_1 = { 'first_name':'HandSome', 'last_name':'Girl', 'age':21, 'city':'Zhuhai', } person_2 = { 'first_name':'Jack', 'last_name':'Li', 'age':18, 'city':'Shanghai', } person_3 = { 'first_name':'Tom', 'last_name':'Wang', 'age':20, 'city':'Shanghai', } peoples = [person_1,person_2,person_3] for people in peoples: print(people)
6-8 宠物 :创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为 pets 的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
dog = {'age':2,'master':'Min LouLou'} cat = {'age':6,'master':'Gai'} monkey = {'age':5,'master':'HaHa'} pets = [dog,cat,monkey] for pet in pets: print(pet['master'].title()+ "'s pet is " + str(pet['age']) + " years old.")
6-9 喜欢的地方 :创建一个名为 favorite_places 的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的 1~3 个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
favorite_places = {"Min LouLou":["bangkok",'chiang mai','singapore'], "Xiao Ming":['chengdu',"chongqing",'lasa'], 'Xiao Nan':['qingdao','seoul','pyongyang'] } for name,place in sorted(favorite_places.items()): print("\nname: " + name.title()) for city in place: print("Favorite places: " +city.title())
6-10 喜欢的数字 :修改为完成练习 6-2 而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来。
#定义三个人,名字和喜欢的数字,字典中存放的是列表 person_0 = {"name":"liujq",'number':[6,7,9]} person_1 = {'name':'sora aoi','number':[0,1]} person_2 = {'name':'Ria Sakurai','number':[7,6,66]} #将三个人存放在一个列表中 persons = [person_0,person_1,person_2] #从列表中遍历三个人,注意,遍历出来的是字典,我们遍历的时候使用的是列表的性质,要注意自己的操作对象是什么 for person in persons: #调用字典中的键和值 print("\nName: " + person['name']) #由于键对应的值是一个列表,使用列表的性质遍历每个人的幸运数字 for num in person['number']: print("Lucky number: " + str(num))
6-11 城市 :创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该 城市的事实。在表示每座城市的字典中,应包含 country 、 population 和 fact 等键。将每座城市的名字以及有关它们的信息都打印出来。
cities = { 'seoul':{ "country":'korea', "population":10, 'fact':'Pickled cabbage' }, 'beijing':{ 'country':'china', 'population':100, 'face':'noodle' }, 'paris':{ 'country':'frence', 'population':15, 'fact':'hambarger'}, } #遍历每个城市的信息,由于属于嵌套,字典里面嵌套一个字典,要只用字典的属性 for captial,value in cities.items(): print(value['country'].title() + "'s captial is " + captial + ', and haa the population of ' + str(value['population'])+'.')