python编程从入门到实践答案二

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 = 17

if 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 = False
    else:
        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':
        break
    age = 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] = place

    repeat = raw_input(continue_prompt)
    if repeat != 'yes':
        break

print("\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_dict

album = 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'] = tracks
    return album_dict

title_prompt = "\nWhat album are you thinking of? "
artist_prompt = "Who's the artist? "

print("Enter 'quit' at any time to stop.")

while True:
    title = raw_input(title_prompt)
    if title == 'quit':
        break
    
    artist = raw_input(artist_prompt)
    if artist == 'quit':
        break

    album = 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)

10.

11.

12.

13.

14.

15

16.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445750.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索CSS预处理器:Sass、Less与Stylus

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【Python】进阶学习:列表推导式如何使用两个for循环

【Python】进阶学习&#xff1a;列表推导式如何使用两个for循环 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到…

Linux多线程之线程互斥

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、互斥 1.线程间的互斥相关背景概念 2.互…

canvas实现水印逻辑分析

目录 效果图一、相关文档二、分析三、实现1、将水印文字转为水印图片2、给刚生成的水印图片加入旋转以及间隔&#xff08;1&#xff09;旋转位移&#xff08;2&#xff09;间隔位移&#xff08;3&#xff09;最后使用toDataURL导出为png图片 3、将生成的水印图片依次排布在需要…

Python实现一个简单的主机-路由器结构(计算机网络)

说明 本系统模拟实现了一个路由器与两个主机节点。该路由器将接收原始以太网帧&#xff0c;并像真正的路由器一样处理它们&#xff1a;将它们转发到正确的传出接口&#xff0c;处理以太网帧&#xff0c;处理 IPv4 分组&#xff0c;处理 ARP分组&#xff0c;处理 ICMP 分组&…

Crow 编译和环境搭建

Crow与其说是编译&#xff0c;倒不如说是环境搭建。Crow只需要包含头文件&#xff0c;所以不用编译生成lib。 Crow环境搭建 boost&#xff08;可以不编译boost&#xff0c;只需要boost头文件即可&#xff09;asio &#xff08;可以不编译&#xff0c;直接包含头文件。不能直接…

事务【MySQL】

稍等更新图片。。。。 事务的概念 引入 在 A 转账 100 元给 B 的过程中&#xff0c;如果在 A 的账户已经减去了 100 元&#xff0c;B 的账户还未加上 100 元之前断网&#xff0c;那么这 100 元将会凭空消失。对于转账这件事&#xff0c;转出和转入这两件事应该是绑定在一起的…

C语言——函数指针——函数指针变量(详解)

函数指针变量 函数指针变量的作用 函数指针变量是指向函数的指针&#xff0c;它可以用来存储函数的地址&#xff0c;并且可以通过该指针调用相应的函数。函数指针变量的作用主要有以下几个方面&#xff1a; 回调函数&#xff1a;函数指针变量可以作为参数传递给其他函数&…

Docker基础教程 - 10 常用容器部署-Redis

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 10 常用容器部署-Redis 下面介绍一下常用容器的部署。可以先简单了解下&#xff0c;用到再来详细查看。 在 Docker 中部署 Redis 容器。 10.1 搜索镜像 首先搜索镜像&#xff0c;命令&…

强大的项目管理软件:OmniPlan Pro 4 mac中文版

OmniPlan Pro 4 mac中文版是由The Omni Group为macOS和iOS操作系统开发的一款专业级项目管理软件。它允许用户创建和管理复杂的项目&#xff0c;从定义任务、分配资源到跟踪进度和生成报告&#xff0c;一应俱全。 这款软件提供了一系列强大的工具&#xff0c;帮助用户进行高效…

集合框架(一)Set系列集合

Set<E>是一个接口 特点 无序&#xff1a;添加数据的顺序和获取出的数据顺序不一致&#xff1b;不重复&#xff0c;无索引 注意&#xff1a;Set要用到的常用方法&#xff0c;基本上就是collection提供的!自己几乎没有额外新增一些常用功能! HashSet集合的底层原理 前置知…

GPU 和并行计算

还是那句话&#xff0c;互联网领域遇到的大多数问题&#xff0c;在现实世界早就有了解法&#xff0c;今天再分享一个。 视频来自安阳市最后的朋克&#xff0c;张教练的实拍&#xff0c;视频中展示的是血糕&#xff0c;安阳市特产&#xff0c;不了解的可以将其等同于 “一种必须…

【JavaScript】JavaScript 变量 ① ( JavaScript 变量概念 | 变量声明 | 变量类型 | 变量初始化 | ES6 简介 )

文章目录 一、JavaScript 变量1、变量概念2、变量声明3、ES6 简介4、变量类型5、变量初始化 二、JavaScript 变量示例1、代码示例2、展示效果 一、JavaScript 变量 1、变量概念 JavaScript 变量 是用于 存储数据 的 容器 , 通过 变量名称 , 可以 获取 / 修改 变量 中的数据 ; …

Util工具类功能设计与类设计(http模块一)

目录 类功能 类定义 类实现 编译测试 Split分割字符串测试 ReadFile读取测试 WriteFile写入测试 UrlEncode编码测试 UrlDecode编码测试 StatuDesc状态码信息获取测试 ExtMime后缀名获取文件mime测试 IsDirectory&IsRegular测试 VaildPath请求路径有效性判断测…

Day33-计算机基础3

Day33-计算机基础3 1.根据TCP/IP进行Linux内核参数优化1.1 例1&#xff1a;调整访问服务端的【客户端】的动态端口范围 &#xff0c;LVS&#xff08;10-50万并发&#xff09;&#xff0c;NGINX负载&#xff0c;SQUID缓存服务,1.2 企业案例&#xff1a;DOS攻击的案例&#xff1a…

工资低适合下班做的6大副业,每一个都值得尝试!

2024年是最适合发展个人副业的时候&#xff01;无论你是否有全职工作&#xff0c;如果你的主业还不能满足你的成就感&#xff0c;还不能满足你的生活需求&#xff0c;这6个下班可以做的副业都很值得尝试&#xff01; 千金宝库做简单的网络任务 近年来&#xff0c;随着互联网技…

算法详解——leetcode150(逆波兰表达式)

欢迎来看博主的算法讲解 博主ID&#xff1a;代码小豪 文章目录 逆波兰表达式逆波兰表达式的作用代码将中缀表达式转换成后缀表达式文末代码 逆波兰表达式 先来看看leetcode当中的原题 大多数人初见逆波兰表达式的时候大都一脸懵逼&#xff0c;因为与平时常见的表达式不同&am…

C语言学习笔记,学懂C语言,看这篇就够了!(中)

附上视频链接&#xff1a;X站的C语言教程 目录 第8章、函数8.1 函数是什么8.2 函数的分类8.2.1 库函数8.2.1.1 如何使用库函数 8.2.2 自定义函数 8.3 函数参数8.3.1 实际参数(实参)8.3.2 形式参数(形参) 8.4 函数调用8.4.1 传值调用8.4.2 传址调用8.4.3 练习 8.5 函数的嵌套调…

如何使用ArcGIS Pro进行坡度分析

坡度分析是地理信息系统中一种常见的空间分析方法&#xff0c;用于计算地表或地形的坡度&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据&#xff0c;除了DEM数据&…

Python爬虫:http和https介绍及请求

HTTP和HTTPS 学习目标&#xff1a; 记忆 http、https的概念和区别记忆 浏览器发送http请求的过程记忆 http请求头的形式记忆 http响应头的形式了解 http响应状态码 1 为什么要复习http和https 在发送请求&#xff0c;获取响应的过程中 就是发送http或https的请求&#xff0c…