python编程从入门到实践
- 第五章 if语句
- 1.条件测试:
- 2.更多的条件测试:
- 3.外星人颜色#1:
- 4. 外星人颜色#2:
- 5. 外星人颜色#3:
- 6. 人生的不同阶段:
- 7. 喜欢的水果:
- 8. 以特殊方式跟管理员打招呼:
- 9. 处理没有用户的情形:
- 10.检查用户名:
- 11.序数:
- 第六章 字典
- 1. 人:
- 2. 喜欢的数字:
- 3. 词汇表:
- 4. 词汇表2:
- 5. 河流:
- 6. 调查:
- 7. 人:
- 8. 宠物:
- 9.喜欢的地方:
- 10. 喜欢的数字:
- 11. 城市:
- 12. ~~扩展:本章的示例足够复杂,可以以很多方式进行扩展了。请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问题或改进输出的格~~
- 第七章 用户输入和while循环
- 1. 汽车租赁:
- 2. 餐馆订位:
- 3. 10的整数倍:
- 4. 比萨配料:
- 5. 电影票:
- 6. 三个出口:
- 7. 无限循环:
- 8. 熟食店:
- 9. 五香烟熏牛肉(pastrami)卖完了:
- 10.梦想的度假胜地:
- 第八章函数
- 1消息:
- 2. 喜欢的图书:
- 3. T恤:
- 4. 大号T恤:
- 5. 城市:
- 6. 城市名:
- 7. 专辑:
- 8. 用户的专辑:
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15
- 16.
第五章 if语句
1.条件测试:
编写一系列条件测试;将每个测试以及你对其结果的预测和实际结果都打印出来。你编写的代码应类似于下面这样:
car = 'subaru'
print("Is car == 'subaru'?I predict True.")
print(car == 'subaru')print("\nIs car == 'audi'?I predict False.")
print(car == 'audi')
·详细研究实际结果,直到你明白了它为何为True或False。
·创建至少10个测试,且其中结果分别为True和False的测试都至少有5个。
car = 'subaru'
print("Is car == 'subaru'? I predict TRUE")
print(car == 'subaru')print("\nIs car == 'audi'? I predict FALSE")
print(car == 'audi')
2.更多的条件测试:
你并非只能创建10个测试。如果你想尝试做更多的比较,可再编写一些测试,并将它们加入到conditional_tests.py中。对于下面列出的各种测试,至少编写一个结果为True和False的测试。
·检查两个字符串相等和不等。
·使用函数lower()的测试。
·检查两个数字相等、不等、大于、小于、大于等于和小于等于。
·使用关键字and和or的测试。
·测试特定的值是否包含在列表中。
·测试特定的值是否未包含在列表中。
m1 = "Zoctopus"
m2 = "nian"
m3 = "Zoctopus"
cars = ['audi', 'bmw', 'subaru', 'toyota']
# 检查两个字符串相等和不等
if m1 == m3:print("m1 equal m3")
if m1 != m2:print("m1 not equal m2")# 使用函数lower()的测试
name = 'ADS'
if name.lower() == 'ads':print("true")# 检查两个数字相等、不等、大于、小于、大于等于和小于等于
age = 23
age_1 = 18
if age == 23:print("true")
if age > 18:print("true")# 使用关键字and和or的测试
if age > 10 and age_1 < 22:print("true")
if age > 25 or age_1 < 25:print("true")# 测试特定的值是否包含在列表中
if 'audi' in cars:print("in true")# 测试特定的值是否未包含在列表中
if 'aaaai' not in cars:print("not in true")
3.外星人颜色#1:
假设在游戏中刚射杀了一个外星人,请创建一个名为alien_color的变量,并将其设置为’green’、‘yellow’或’red’。
·编写一条if语句,检查外星人是否是绿色的;如果是,就打印一条消息,指出玩家获得了5个点。
·编写这个程序的两个版本,在一个版本中上述测试通过了,而在另一个版本中未通过(未通过测试时没有输出)
# 通过
alien_color = 'green'if alien_color == 'green':print("You just earned 5 points!")# 未通过
alien_color = 'red'if alien_color == 'green':print("You just earned 5 points!")
4. 外星人颜色#2:
像练习5-3那样设置外星人的颜色,并编写一个if-else结构。
·如果外星人是绿色的,就打印一条消息,指出玩家因射杀该外星人获得了5个点。
·如果外星人不是绿色的,就打印一条消息,指出玩家获得了10个点。
·编写这个程序的两个版本,在一个版本中执行if代码块,而在另一个版本中执行else代码块。
# 版本一
alien_color = 'green'if alien_color == 'green':print("You just earned 5 points!")
else:print("You just earned 10 points!")# 版本二
alien_color = 'yellow'if alien_color == 'green':print("You just earned 5 points!")
else:print("You just earned 10 points!")
5. 外星人颜色#3:
将练习5-4中的if-else结构改为if-elif-else结构。
·如果外星人是绿色的,就打印一条消息,指出玩家获得了5个点。
·如果外星人是黄色的,就打印一条消息,指出玩家获得了10个点。
·如果外星人是红色的,就打印一条消息,指出玩家获得了15个点。
·编写这个程序的三个版本,它们分别在外星人为绿色、黄色和红色时打印一条消息。
alien_color = 'red'if alien_color == 'green':print("You just earned 5 points!")
elif alien_color == 'yellow':print("You just earned 10 points!")
else:print("You just earned 15 points!")alien_color = 'yellow'if alien_color == 'green':print("You just earned 5 points!")
elif alien_color == 'yellow':print("You just earned 10 points!")
else:print("You just earned 15 points!")alien_color = 'green'if alien_color == 'green':print("You just earned 5 points!")
elif alien_color == 'yellow':print("You just earned 10 points!")
else:print("You just earned 15 points!")
6. 人生的不同阶段:
设置变量age的值,再编写一个if-elif-else结构,根据age的值判断处于人生的哪个阶段。
·如果一个人的年龄小于2岁,就打印一条消息,指出他是婴儿。
·如果一个人的年龄为2(含)~4岁,就打印一条消息,指出他正蹒跚学步。
·如果一个人的年龄为4(含)~13岁,就打印一条消息,指出他是儿童。
·如果一个人的年龄为13(含)~20岁,就打印一条消息,指出他是青少年。
·如果一个人的年龄为20(含)~65岁,就打印一条消息,指出他是成年人。
·如果一个人的年龄超过65(含)岁,就打印一条消息,指出他是老年人。
age = 17if age < 2:print("You're a baby!")
elif age < 4:print("You're a toddler!")
elif age < 13:print("You're a kid!")
elif age < 20:print("You're a teenager!")
elif age < 65:print("You're an adult!")
else:print("You're an elder!")
7. 喜欢的水果:
创建一个列表,其中包含你喜欢的水果,再编写一系列独立的if语句,检查列表中是否包含特定的水果。
·将该列表命名为favorite_fruits,并在其中包含三种水果。
·编写5条if语句,每条都检查某种水果是否包含在列表中,如果包含在列表中,就打印一条消息,如“You really like bananas!”。
favorite_fruits = ['blueberries', 'salmonberries', 'peaches']if 'bananas' in favorite_fruits:print("You really like bananas!")
if 'apples' in favorite_fruits:print("You really like apples!")
if 'blueberries' in favorite_fruits:print("You really like blueberries!")
if 'kiwis' in favorite_fruits:print("You really like kiwis!")
if 'peaches' in favorite_fruits:print("You really like peaches!")
8. 以特殊方式跟管理员打招呼:
创建一个至少包含5个用户名的列表,且其中一个用户名为’admin’。想象你要编写代码,在每位用户登录网站后都打印一条问候消息。遍历用户名列表,并向每位用户打印一条问候消息。
·如果用户名为’admin’,就打印一条特殊的问候消息,如“Hello admin,would you like to see a status report?”。
·否则,打印一条普通的问候消息,如“Hello Eric,thank you for logging in again”
usernames = ['admin', 'yf', 'sks', 'yl', 'yjy']for username in usernames:if username == 'admin':print("Hello admin, would you like to see a status report?")else:print("Hello " + username + ", thank you for logging in again!")
9. 处理没有用户的情形:
在为完成练习5-8编写的程序中,添加一条if语句,检查用户名列表是否为空。
·如果为空,就打印消息“We need to find some users!”。
·删除列表中的所有用户名,确定将打印正确的消息。
usernames = []if usernames:for username in usernames:if username == 'admin':print("Hello admin, would you like to see a status report?")else:print("Hello " + username + ", thank you for logging in again!")else:print("We need to find some users!")
10.检查用户名:
按下面的说明编写一个程序,模拟网站确保每位用户的用户名都独一无二的方式。
·创建一个至少包含5个用户名的列表,并将其命名为current_users。
·再创建一个包含5个用户名的列表,将其命名为new_users,并确保其中有一两个用户名也包含在列表current_users中。
·遍历列表new_users,对于其中的每个用户名,都检查它是否已被使用。如果是这样,就打印一条消息,指出需要输入别的用户名;否则,打印一条消息,指出这个用户名未被使用。
·确保比较时不区分大小写;换句话说,如果用户名’John’已被使用,应拒绝用户名’JOHN’。
current_users = ['eric', 'willie', 'admin', 'erin', 'Ever']
new_users = ['sarah', 'Willie', 'PHIL', 'ever', 'Iona']# 将current_users中的元素全都转换为小写
current_users_lower = [user.lower() for user in current_users]for new_user in new_users:if new_user.lower() in current_users_lower: # 判断注册的名字是否已经存在print("Sorry " + new_user + ", that name is taken.")else:print("Great, " + new_user + " is still available.")
11.序数:
序数表示位置,如1st和2nd。大多数序数都以th结尾,只有1、2和3例外。
·在一个列表中存储数字1~9。
·遍历这个列表。·在循环中使用一个if-elif-else结构,以打印每个数字对应的序数。输出内容应为1st、2nd、3rd、4th、5th、6th、7th、8th和9th,但每个序数都独占一行。
numbers = [1,2,3,4,5,6,7,8,9]for num in numbers:if num == 1:print("1st")elif num == 2:print("2nd")elif num == 3:print("3rd")else:print(str(num) + "th")
第六章 字典
1. 人:
使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键first_name、last_name、age和city。将存储在该字典中的每项信息都打印出来。
person = {'first_name': 'shang','last_name': 'yang','age': 21,'city': 'qingdao',}print(person['first_name'])
print(person['last_name'])
print(person['age'])
print(person['city'])
2. 喜欢的数字:
使用一个字典来存储一些人喜欢的数字。请想出5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的。
favorite_numbers = {'mandy': 42,'micah': 23,'gus': 7,'hank': 1000000,'maggie': 0,}num = favorite_numbers['mandy']
print("Mandy's favorite number is " + str(num) + ".")num = favorite_numbers['micah']
print("Micah's favorite number is " + str(num) + ".")num = favorite_numbers['gus']
print("Gus's favorite number is " + str(num) + ".")num = favorite_numbers['hank']
print("Hank's favorite number is " + str(num) + ".")num = favorite_numbers['maggie']
print("Maggie's favorite number is " + str(num) + ".")
3. 词汇表:
Python字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
- 想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
- 以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符(\n)插入一个空行,然后在下一行以缩进的方式打印词汇的含义。
glossary = {'string': 'A series of characters.','comment': 'A note in a program that the Python interpreter ignores.','list': 'A collection of items in a particular order.','loop': 'Work through a collection of items, one at a time.','dictionary': "A collection of key-value pairs.",}word = 'string'
print("\n" + word.title() + ": " + glossary[word])word = 'comment'
print("\n" + word.title() + ": " + glossary[word])word = 'list'
print("\n" + word.title() + ": " + glossary[word])word = 'loop'
print("\n" + word.title() + ": " + glossary[word])word = 'dictionary'
print("\n" + word.title() + ": " + glossary[word])
4. 词汇表2:
既然你知道了如何遍历字典,现在请整理你为完成练习6-3而编写的代码,将其中的一系列print语句替换为一个遍历字典中的键和值的循环。确定该循环正确无误后,再在词汇表中添加5个Python术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
glossary = {'string': 'A series of characters.','comment': 'A note in a program that the Python interpreter ignores.','list': 'A collection of items in a particular order.','loop': 'Work through a collection of items, one at a time.','dictionary': "A collection of key-value pairs.",'key': 'The first item in a key-value pair in a dictionary.','value': 'An item associated with a key in a dictionary.','conditional test': 'A comparison between two values.','float': 'A numerical value with a decimal component.','boolean expression': 'An expression that evaluates to True or False.',}for word, definition in glossary.items():print("\n" + word.title() + ": " + definition)
5. 河流:
创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是’nile’:‘egypt’。
- 使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”。
- 使用循环将该字典中每条河流的名字都打印出来。
- 使用循环将该字典包含的每个国家的名字都打印出来
rivers = {'nile': 'egypt','mississippi': 'united states','fraser': 'canada','kuskokwim': 'alaska','yangtze': 'china',}for river, country in rivers.items():print("The " + river.title() + " flows through " + country.title() + ".")# 打印该字典中每条河流的名字
print("\nThe following rivers are included in this data set:")
for river in rivers.keys():print("- " + river.title())#打印该字典中包含的每个国家的名字
print("\nThe following countries are included in this data set:")
for country in rivers.values():print("- " + country.title())
6. 调查:
在6.3.1节编写的程序favorite_languages.py中执行以下操作。·创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。·遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
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() + ".")print("\n")coders = ['phil', 'josh', 'david', 'becca', 'sarah', 'matt', 'danielle']
for coder in coders:if coder in favorite_languages.keys():print("Thank you for taking the poll, " + coder.title() + "!")else:print(coder.title() + ", what's your favorite programming language?")
7. 人:
在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people的列表中。遍历这个列表,将其中每个人的所有信息都打印出来。
people = []# 定义一些人的信息,并添加进列表
person = {'first_name': 'eric','last_name': 'matthes','age': 43,'city': 'sitka',}
people.append(person)person = {'first_name': 'ever','last_name': 'matthes','age': 5,'city': 'sitka',}
people.append(person)person = {'first_name': 'willie','last_name': 'matthes','age': 8,'city': 'sitka',}
people.append(person)# 打印所有信息
for person in people:name = person['first_name'].title() + " " + person['last_name'].title()age = str(person['age'])city = person['city'].title()print(name + ", of " + city + ", is " + age + " years old.")
8. 宠物:
创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为pets的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
pets = []pet = {'type': 'fish','name': 'john','owner': 'guido',}
pets.append(pet)pet = {'type': 'chicken','name': 'clarence','owner': 'tiffany',}
pets.append(pet)pet = {'type': 'dog','name': 'peso','owner': 'eric',}
pets.append(pet)for pet in pets:print("\nHere's what I know about " + pet['name'].title() + ":")for key, value in pet.items():print("\t" + key + ": " + str(value))
9.喜欢的地方:
创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的1~3个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
favorite_places = {'znn': ['chengdu', 'shanghai', 'hangzhou'],'yl': ['chengdu', 'huang montains'],'other': ['xi-an', 'xinjiang', 'nanji']}for name, places in favorite_places.items():print("\n" + name.title() + " likes the following places:")for place in places:print("- " + place.title())
10. 喜欢的数字:
修改为完成练习6-2而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来。
favorite_numbers = {'mandy': [42, 17],'micah': [42, 39, 56],'gus': [7, 12],}for name, numbers in favorite_numbers.items():print("\n" + name.title() + " likes the following numbers:")for number in numbers:print(" " + str(number))
11. 城市:
创建一个名为cities的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含country、population和fact等键。将每座城市的名字以及有关它们的信息都打印出来
cities = {'santiago': {'country': 'chile','population': 6158080,'nearby mountains': 'andes',},'talkeetna': {'country': 'alaska','population': 876,'nearby mountains': 'alaska range',},'kathmandu': {'country': 'nepal','population': 1003285,'nearby mountains': 'himilaya',}}for city, city_info in cities.items():country = city_info['country'].title()population = city_info['population']mountains = city_info['nearby mountains'].title()print("\n" + city.title() + " is in " + country + ".")print(" It has a population of about " + str(population) + ".")print(" The " + mountains + " mountains are nearby.")
12. 扩展:本章的示例足够复杂,可以以很多方式进行扩展了。请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问题或改进输出的格
aliens = []alien = {'name': 'A','color': 'green','point': 5,'speed': 'slow',}
aliens.append(alien)alien = {'name': 'B','color': 'yellow','point': 10,'speed': 'med',}
aliens.append(alien)alien = {'name': 'C','color': 'red','point': 10,'speed': 'fast',}
aliens.append(alien)print(aliens)# for循环打印
for alien_info in aliens:print("\nHere's what I know about " + alien_info['name'].title() + ":")for key, value in alien_info.items():print("\t" + key + ": " + str(value))
第七章 用户输入和while循环
1. 汽车租赁:
编写一个程序,询问用户要租赁什么样的汽车,并打印一条消息,如“Let me see if I can find you a Subaru”
car = input("What kind of car would you like? ")print("Let me see if I can find you a " + car.title() + ".")
2. 餐馆订位:
编写一个程序,询问用户有多少人用餐。如果超过8人,就打印一条消息,指出没有空桌;否则指出有空桌。
number = input("how many people eat? ")
number = int(number)
if number > 8:print("no empty table.")
else:print("have empty table.")
3. 10的整数倍:
让用户输入一个数字,并指出这个数字是否是10的整数倍。
number = input("input a number: ")
number = int(number)
if number % 10 == 0:print("yes")
else:print("no")
4. 比萨配料:
编写一个循环,提示用户输入一系列的比萨配料,并在用户输入’quit’时结束循环。每当用户输入一种配料后,都打印一条消息,说我们会在比萨中添加这种配料。
prompt = "\nTell me Pizza Toppings"
prompt += "\nEnter 'quit' to end the program."active = True
while active:message = raw_input(prompt)if message == 'quit':active = Falseelse:print('Add ' + message + ".")
5. 电影票:
有家电影院根据观众的年龄收取不同的票价:不到3岁的观众免费;3~12岁的观众为10美元;超过12岁的观众为15美元。请编写一个循环,在其中询问用户的年龄,并指出其票价。
prompt = "How old are you?"
prompt += "\nEnter 'quit' when you are finished. "while True:age = input(prompt)if age == 'quit':breakage = int(age)if age < 3:print(" You get in free!")elif age < 13:print(" Your ticket is $10.")else:print(" Your ticket is $15.")
6. 三个出口:
以另一种方式完成练习7-4或练习7-5,在程序中采取如下所有做法。·在while循环中使用条件测试来结束循环。·使用变量active来控制循环结束的时机。·使用break语句在用户输入’quit’时退出循环。
在这里插入代码片
7. 无限循环:
编写一个没完没了的循环,并运行它(要结束该循环,可按Ctrl+C,也可关闭显示输出的窗口)。
signal = True
x = 2
while signal:print(x)
8. 熟食店:
创建一个名为sandwich_orders的列表,在其中包含各种三明治的名字;再创建一个名为finished_sandwiches的空列表。遍历列表sandwich_orders,对于其中的每种三明治,都打印一条消息,如I made your tuna sandwich,并将其移到列表finished_sandwiches。所有三明治都制作好后,打印一条消息,将这些三明治列出来。
sandwich_orders = ['veggie', 'grilled cheese', 'turkey', 'roast beef']
finished_sandwiches = []while sandwich_orders:finish_sandwich = sandwich_orders.pop()print("I made your " + finish_sandwich)finished_sandwiches.append(finish_sandwich)print("\nThe sandwiches have been finished !")
for finish in finished_sandwiches:print(finish)
9. 五香烟熏牛肉(pastrami)卖完了:
使用为完成练习7-8而创建的列表sandwich_orders,并确保’pastrami’在其中至少出现了三次。在程序开头附近添加这样的代码:打印一条消息,指出熟食店的五香烟熏牛肉卖完了;再使用一个while循环将列表sandwich_orders中的’pastrami’都删除。确认最终的列表finished_sandwiches中不包含’pastrami’。
sandwich_orders = ['pastrami', 'veggie', 'grilled cheese', 'pastrami','turkey', 'roast beef', 'pastrami']
finished_sandwiches = []print("I'm sorry, we're all out of pastrami today.")
while 'pastrami' in sandwich_orders:sandwich_orders.remove('pastrami')print("\n")
while sandwich_orders:finish_sandwich = sandwich_orders.pop()print("I'm working on your " + finish_sandwich + " sandwich.")finished_sandwiches.append(finish_sandwich)print("\n")
for sandwich in finished_sandwiches:print("I made a " + sandwich + " sandwich.")
10.梦想的度假胜地:
编写一个程序,调查用户梦想的度假胜地。使用类似于“If you could visit one place in the world,where would you go?”的提示,并编写一个打印调查结果的代码块。
name_prompt = "\nWhat's your name? "
place_prompt = "If you could visit one place in the world, where would it be? "
continue_prompt = "\nWould you like to let someone else respond? (yes/no) "responses = {}while True:name = input(name_prompt)place = input(place_prompt)responses[name] = placerepeat = raw_input(continue_prompt)if repeat != 'yes':breakprint("\n--- Results ---")
for name, place in responses.items():print(name.title() + " would like to visit " + place.title() + ".")
第八章函数
1消息:
编写一个名为display_message()的函数,它打印一个句子,指出你在本章学的是什么。调用这个函数,确认显示的消息正确无误。
def display_message():print("Study Function.")display_message()
2. 喜欢的图书:
编写一个名为favorite_book()的函数,其中包含一个名为title的形参。这个函数打印一条消息,如One of my favorite books is Alice in Wonderland。调用这个函数,并将一本图书的名称作为实参传递给它。
def favorite_book(title):print("One of my favorite book is " + title + ".")favorite_book('CSAPP')
3. T恤:
编写一个名为make_shirt()的函数,它接受一个尺码以及要印到T恤上的字样。这个函数应打印一个句子,概要地说明T恤的尺码和字样。使用位置实参调用这个函数来制作一件T恤;再使用关键字实参来调用这个函数。
def make_shirt(size, message):print("\nI'm going to make a " + size + " t-shirt.")print('It will say, "' + message + '"')make_shirt('large', 'I love Python!')
make_shirt(message="Readability counts.", size='medium')
4. 大号T恤:
修改函数make_shirt(),使其在默认情况下制作一件印有字样“I love Python”的大号T恤。调用这个函数来制作如下T恤:一件印有默认字样的大号T恤、一件印有默认字样的中号T恤和一件印有其他字样的T恤(尺码无关紧要)。
def make_shirt(size='large', message='I love Python!'):print("\nI'm going to make a " + size + " t-shirt.")print('It will say, "' + message + '"')make_shirt()
make_shirt(size='medium')
make_shirt('small', 'Happy Every Day.')
5. 城市:
编写一个名为describe_city()的函数,它接受一座城市的名字以及该城市所属的国家。这个函数应打印一个简单的句子,如Reykjavik is in Iceland。给用于存储国家的形参指定默认值。为三座不同的城市调用这个函数,且其中至少有一座城市不属于默认国家。
def describe_city(cityname,contury='china'):print(cityname.title + " is in " + contury.title + ".")describe_city('beijing')
describe_city('NewYork','American')
describe_city('qingdao')
6. 城市名:
编写一个名为city_country()的函数,它接受城市的名称及其所属的国家。这个函数应返回一个格式类似于下面这样的字符串:
"Santiago,Chile"
至少使用三个城市-国家对调用这个函数,并打印它返回的值。
def city_country(city,country):return (city.title() + ',' + country.title())city = city_country('shanghai', 'china')
print(city)city = city_country('ushuaia', 'argentina')
print(city)city = city_country('longyearbyen', 'svalbard')
print(city)
7. 专辑:
编写一个名为make_album()的函数,它创建一个描述音乐专辑的字典。这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。使用这个函数创建三个表示不同专辑的字典,并打印每个返回的值,以核实字典正确地存储了专辑的信息。
给函数make_album()添加一个可选形参,以便能够存储专辑包含的歌曲数。如果调用这个函数时指定了歌曲数,就将这个值添加到表示专辑的字典中。调用这个函数,并至少在一次调用中指定专辑包含的歌曲数。
def make_album(artist, title):album_dict = {'artist': artist.title(),'title': title.title(),}return album_dictalbum = make_album('metallica', 'ride the lightning')
print(album)album = make_album('beethoven', 'ninth symphony')
print(album)album = make_album('willie nelson', 'red-headed stranger')
print(album)
8. 用户的专辑:
在为完成练习8-7编写的程序中,编写一个while循环,让用户输入一个专辑的歌手和名称。获取这些信息后,使用它们来调用函数make_album(),并将创建的字典打印出来。在这个while循环中,务必要提供退出途径。
def make_album(artist, title, tracks=0):"""Build a dictionary containing information about an album."""album_dict = {'artist': artist.title(),'title': title.title(),}if tracks:album_dict['tracks'] = tracksreturn album_dicttitle_prompt = "\nWhat album are you thinking of? "
artist_prompt = "Who's the artist? "print("Enter 'quit' at any time to stop.")while True:title = input(title_prompt)if title == 'quit':breakartist = rinput(artist_prompt)if artist == 'quit':breakalbum = make_album(artist, title)print(album)print("\nThanks for responding!")
9.
def show_magicians(names):for name in names:print(name.title())magicians = ['znn','david','amy']
show_magicians(magicians)