这本书是我自学Python的第一本书,里面的习题都在寒假已经完成,由于当时博客尚未搭建,故里面题目的答案并未发表。现在在开发项目博客没有新内容更新,因此这段实践会陆续上传原来的习题答案。每个题目均为自己设计的代码,优化与重构方面与标准答案可能有所不同。
参考教材:《Python编程从入门到实践》 【美】 Eric Matthes 著
Chapter6
6-1 人:使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name、last_name、age和city。将存储在该字典中的每项信息都打印出来。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
person = {'first_name': 'Chen',
'last_name': 'Xili',
'age': 20,
'city': 'Yangxin',
}
print(person['first_name'])
print(person['last_name'])
print(person['age'])
print(person['city'])
6-2 喜欢的数字:使用一个字典来存储一些人喜欢的数字。请想出5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_numbers = {'陈细利': 1,
'柯正': 2,
'肖龙港': 3,
'曹中烨': 4,
'袁基宸': 38,
}
for favorite_number in favorite_numbers:
print(favorite_number +
"最喜欢的数字是" +
str(favorite_numbers[favorite_number]))
6-3 词汇表:Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
□ 想出你在面前学过的5个编程词汇,将他们用作词汇表的键,并将它们的含义作为值存储在词汇表中。
□ 以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,在打印词汇的含义;也可在一行打印词汇,再使用换行符(\n)插入一个空行,然后在下一行以缩进的方式打印词汇的含义。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
words = {'for': '循环方式',
'print': '打印输出在屏幕显示',
'pop()': '从列表结尾中删除数据',
'sort': '按字母从小到大永久排序',
'del': '删除某个数据',
}
print('for:' + words['for'])
print('print:' + words['print'])
print('pop():' + words['pop()'])
print('sort:' + words['sort'])
print('del:' + words['del'])
6-4 词汇表2:既然你知道了如何遍历字典,现在请整理你为完成练习6-3而编写的代码,将其中的一系列print语句替换为一个遍历字典中的键和值的循环。确定该循环正确无误后,再在词汇表中添加5个Python术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
words = {'for': '循环方式',
'print': '打印输出在屏幕显示',
'pop()': '从列表结尾中删除数据',
'sort': '按字母从小到大永久排序',
'del': '删除某个数据',
'set()': '找出列表中独一无二的元素',
'value()': '提取字典中包含的值',
'if': '假设语句',
'keys()': '只提取字典中包含的名称',
'append()': '添加数据',
}
for name, value in words.items():
print(name + ":" + value)
6-5 河流:创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键-值对可能是’nile’:’egypt’。
□ 使用循环为每条河流打印一条信息,如”The Nile runs throuth Egypt”。
□ 使用循环将该字典中每条河流的名字都打印出来。
□ 使用循环将该字典包含的每个国家的名字都打印出来。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
rivers = {"nile": "egypt",
"changjiang river": "china",
"rhine river basin": "French",
}
for name, country in rivers.items():
print("\nThe " + name.title() + "runs through " + country.title())
print(name.title())
print(country.title())
6-6 调查:在6.3.1节编写的程序favorite_languages.py中执行以下操作。
□ 创建一个应该会接收调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
□ 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name, language in favorite_languages.items():
print(name.title() + "'s favorite language is " + language.title() + ".")
names = ['jen', 'edward', 'phil', 'chen', 'cao']
for name in names:
if name in favorite_languages.keys():
print("Thank you," + name.title() + ".")
else:
print(name.title() + ",I invite you join us.")
6-7 人:在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people的列表中。遍历这个列表,将其中每个人的所有信息都打印出来。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
person_a = {'first_name': 'Chen',
'last_name': 'Xili',
'age': 19,
'city': 'Yangxin',
}
person_b = {'first_name': 'Yuan',
'last_name': 'jicheng',
'age': 18,
'city': 'Yangxin',
}
person_c = {'first_name': 'Cao',
'last_name': 'zhongye',
'age': 17,
'city': 'Yangxin',
}
peoples = [person_a, person_b, person_c]
for people in peoples:
print("\n\tfirst_name:" + people['first_name'].title())
print("\tlast_name:" + people['last_name'].title())
print("\tage:" + str(people['age']))
print("\tcity:" + people['city'].title())
6-8 宠物:创建多个字典,对于每个字典,都是用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的姓名。将这些字典存储在一个名为pets的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
wangcai = {'pet_type': 'dog', 'owner': 'jack'}
xiaobai = {'pet_type': 'cat', 'owner': 'stave'}
xiaohei = {'pet_type': 'snake', 'owner': 'lilith'}
pets = [wangcai, xiaobai , xiaohei]
for pet in pets:
print("\n\tpet_type:" + pet["pet_type"].title())
print("\towner:" + pet["owner"].title())
6-9 喜欢的地方:创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的1~3个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_places = {
'jack': ['wuhan', 'beijing'],
'lilith': ['dali'],
'jone': ['chongqing', 'shanghai', 'america'],
}
for name, places in favorite_places.items():
print("\n" + name.title() + "'s favorite places is:")
for place in places:
print(place)
6-10 喜欢的数字:修改为练习6-2而编写的程序,让每个人都可以由多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_numbers = {'陈细利': [1, 50, 72],
'柯正': [2, 4, 6, 8],
'肖龙港': [3, 6, 9, 12],
'曹中烨': [4, 16, 64, 256],
'袁基宸': [38, 250, 438, 520],
}
for name, favorite_number in favorite_numbers.items():
print(name + "最喜欢的数字是:")
for number in favorite_number:
print(str(number))
6-11 城市:创建一个名为cities的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含country、populatio和fact等键。将每座城市的名字以及有关它们的信息都打印出来。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
cities = {
'wuhan': {
'country': 'china',
'population': 11000000,
'fact': 'pneumonia',
},
'beijing': {
'country': 'china',
'population': 21540000,
'fact': 'Olympics',
},
'shanghai': {
'country': 'china',
'population': 24240000,
'fact': 'import expo'
},
}
for city_name, country_info in cities.items():
print("\nCity name: " + city_name.title())
country = country_info['country'].title()
population = str(country_info['population'])
fact = country_info['fact'].title()
print("\tcountry:" + country)
print("\tpopulation:" + str(population))
print("\tfact:" + fact)