python编程从入门到实践(第二版)第八章 课后练习题

"""练习8-1  消息
编写一个名为display_message()的函数,它打印一个句子,
指出你在本章学的是什么。调用这个函数,确认显示的消息正确无误 """

# 1.定义函数
def display_message():  # 定义函数
    msg = "本章学的是函数"  # 函数的动作
    print(msg)


# 2.调用函数
display_message()  
"""练习8-2  喜欢的图书
编写一个名为favorite_book()的函数,其中包含一个名为title的形参。
这个函数打印一条消息,如One of my favorite books is Alice in Wonderland。
调用这个函数,并将一本图书的名称作为实参传递给它 """

# 1.定义函数
def favorite_book(title): # 定义函数(写入形参)
    print(title + " 是我最喜欢的书")  # 函数的动作

# 2.调用函数(传入实参)
favorite_book('python编程从入门到实践')
"""练习8-3  T恤
编写一个名为make_shirt()的函数,它接受一个尺码以及要印到T恤上的字样。
这个函数应打印一个句子,概要地说明T恤衫的尺码和字样。
使用位置实参调用这个函数来制作一件T恤;再使用关键字实参来调用这个函数。"""
# 1.定义函数
def make_shirt(size, message):  # 传入两给实个形参 函数(形参1,形参2)
    print(f"\nI'm going to make a {size} t-shirt.")  # 我要这一件()的 T 恤
    print(f'It will say, "{message}"')  # 要印上()

# 2.调用函数
make_shirt('large', 'I love Python!')  # 按顺序传入两给实参(大号的,我爱蟒蛇)

# 3.使用位置实参调用这个函数
make_shirt(message="hello python.", size='medium')  # 按关键字传入两给实参(你好python,中号)
"""练习8-4  大号T恤
1.修改函数make_shirt(),使其在默认情况下制作一件印有字样I love Python的大号T恤。
2.调用这个函数来制作如下T恤:一件印有默认字样的大号T恤、
3.一件印有默认字样的中号T恤、一件印有其他字样的T恤(尺码无关紧要)。"""
# 1.定义函数默认形参
def make_shirt(size='large', message='I love Python!'):  # 传入两个默认的形参
    """指出要制作的T恤什么样。"""
    print("\nI'm going to make a " + size + " t-shirt.")
    print('It will say, "' + message + '"')


# 调用函数
make_shirt()

# 2.调用函数传入默认的实参
make_shirt(size='medium')

# 3.传入两个默认的实参(以传入的为准)
make_shirt('small', 'hello python.')
"""练习8-5  城市
编写一个名为describe_city()的函数,它接受一座城市的名字以及该城市所属的国家。
这个函数应打印一个简单的句子,如Reykjavik is in Iceland。
给用于存储国家的形参指定默认值。
为三座不同的城市调用这个函数,且其中至少有一座城市不属于默认国家"""
# 1.定义函数
def describe_city(chen_shi, guo_jia='china'):  # 定义函数并设置(城市,国家)两个形参,并把形参国家的默认值设为 china
    """描述城市。"""
    msg = f"{chen_shi.title()} is in {guo_jia.title()}."  # 城市在国家
    print(msg)  # 打印

# 2.调用函数
describe_city('shang hai')  # 虽然只输入一个实参,但第二个参数有默认值
describe_city('liu yue', 'usa')  # 虽然设定了默认参数,但还是以实参为准
describe_city('bei jing')  # 虽然只输入一个实参,但第二个参数有默认值
"""练习8-6  城市名
1.编写一个名为city_country()的函数,它接受城市的名称及其所属的国家。
这个函数应返回一个格式类似于下面的字符串:
“Santiago, Chile”
2.至少使用三个城市-国家对调用这个函数,并打印它返回的值。"""

# 1.定义函数
def city_country(city, country):  # 定义函数并设置(城市,国家)两个形参
    """返回一个类似于'Bei jin, China'的字符串。"""
    return f"{city.title()}, {country.title()}"  # 返回两个参数并首字母大写

# 2.调用函数接收返回结果
city = city_country('Bei jin', 'China')  # 调用函数写入实参并用变量接收函数的结果
print(city)

city = city_country('Liu Yue', 'USA')   # 调用函数写入实参并用变量接收函数的结果
print(city)

city = city_country('Lun Dun', 'English')   # 调用函数写入实参并用变量接收函数的结果
print(city)
"""练习8-7  专辑
1.编写一个名为make_album()的函数,它创建一个描述音乐专辑的字典。
这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。
2.使用这个函数创建三个表示不同专辑的字典,并打印每个返回的值,以核实字典正确地存储了专辑的信息。
3.给函数make_album()添加一个可选形参,以便能够存储专辑包含的歌曲数
。如果调用这个函数时指定了歌曲数,就将这个值添加到表示专辑的字典中
。调用这个函数,并至少在一次调用中指定专辑包含的歌曲数。"""

# 1.定义函数
def make_album(name, title, num=0):  # 定义函数设置形参和默认参数(歌手,专辑名,可选形参数量)
    """创建一个包含专辑信息的字典。"""
    album_dict = {
        'name': name.title(),
        'title': title.title()}
    if num:  # 如果传入了数量
        album_dict['num'] = num  # 在字典中增加数量的元素
    return album_dict  # 返回字典

# 2.调用返回一个包含这两项信息的字典
album = make_album('hui lin', 'python')
print(album)

album = make_album('chen si yuan', 'c++')
print(album)

# 3.调用指定专辑包含的歌曲数
album = make_album('chen si yu', 'c', num=8)
print(album)
"""练习8-8  用户的专辑
在为完成练习8-7编写的程序中,编写一个while循环,
4.让用户输入一个专辑的歌手和名称。获取这些信息后,
5.使用它们来调用函数make_album()并将创建的字典打印出来。
6.在这个while循环中,务必要提供退出途径。"""

# 1.定义函数
def make_album(name, title, num=0):  # 定义函数设置形参和默认参数(歌手,专辑名,可选形参数量)
    """创建一个包含专辑信息的字典。"""
    album_dict = {
        'name': name.title(),
        'title': title.title()}
    if num:  # 如果传入了数量
        album_dict['num'] = num  # 在字典中增加数量的元素
    return album_dict  # 返回字典

# 2.调用返回一个包含这两项信息的字典
album = make_album('hui lin', 'python')
print(album)

album = make_album('chen si yuan', 'c++')
print(album)

# 3.调用指定专辑包含的歌曲数
album = make_album('chen si yu', 'c', num=8)
print(album)

# 6.让用户知道如何退出。
print("\n随时输入 quit 时退出")  # 随时输入 quit 时退出

# 生成提示语。
title_prompt = "\n你想要什么专辑: "  
artist_prompt = "歌手是谁: "  

while True:  # 循环
    # 4.让用户输入一个专辑的歌手和名称
    title = input(title_prompt)  # 请用户输入专辑名并赋值给变量
    if title == 'quit':  # 如果输入 quit
        break  # 就停止程序
    name = input(artist_prompt)  # 请用户输入歌手名并赋值给变量
    if name == 'quit':  # 如果输入 quit
        break  # 就停止程序

    # 5.调用函数并将创建的字典打印出来
    album = make_album(name, title)  # 调用函数
    print(album)  # 打印

print("\nThanks for responding!")  # 打印谢谢你的回复
"""练习8-9  魔术师
创建一个包含魔术师名字的列表,
将其传递给一个名为show_magicians()的函数
,这个函数打印列表中每个魔术师的名字。"""

# 1.定义函数
def show_magicians(magicians):  # 写入形参
    """打印列表中每个魔术师的名字。"""
    for magician in magicians:  # 遍历列表
        print(magician.title())  # 打印每个魔术师的名字

# 要在调用之前定义
magicians = ['chen si yuan', 'chen si yu', 'hui lin']  # 魔术师名字的列表

# 2.调用函数
show_magicians(magicians)  # 列表作为实参传入
"""练习8-10  了不起的魔术师
在你为完成练习8-9而编写的程序中,
3.编写一个名为make_great()的函数,
4.对魔术师列表进行修改,在每个魔术师的名字中都加入字样the Great。
5.调用函数show_magicians(),确认魔术师列表确实变了。"""

# 1.定义函数
def show_magicians(magicians):  # 写入形参
    """打印列表中每个魔术师的名字。"""
    for magician in magicians:  # 遍历列表
        print(magician.title())  # 打印每个魔术师的名字

# 3.编写一个名为make_great()的函数
def make_great(magicians):
    # 新建一个列表,用于存储修改后的魔术师名字。
    great_magicians = []

    # 在每个魔术师的名字中都加入字样the Great,并将其添加到great_magicians中。
    while magicians:  # 无限循环
        magician = magicians.pop()  # 删除列表最后魔术师的名字
        great_magician = magician + ' the Great'  # 魔术师的名字中都加入字样the Great
        great_magicians.append(great_magician)  # 列表最后添加魔术师的新名字

    # 将修改后的名字放回到列表magicians中。
    for name in great_magicians:
        magicians.append(name)

# 要在调用之前定义
magicians = ['chen si yuan', 'chen si yu', 'hui lin']  # 魔术师名字的列表

# 2.调用函数
print("原来的魔术师名字的列表")
show_magicians(magicians)  # 列表作为实参传入
print("*"*50)

# 4。调用函数对魔术师列表进行修改
make_great(magicians)

# 5.调用函数show_magicians(),确认魔术师列表确实变了。"""
print("改变后魔术师名字的列表")
show_magicians(magicians)
"""练习8-11  不变的魔术师
修改你为完成练习8-10而编写的程序,在调用函数make_great()时,
5.向它传递魔术师列表的拷贝。
6.由于不想修改原始列表,请返回修改后的列表,并将其存储到另一个列表中。
7.分别使用这两个列表来调用show_magicians(),
确认一个列表包含的是原来的魔术师名字,而另一个列表包含的是添加了the Great字样的魔术师名字。"""

# 1.定义函数
def show_magicians(magicians):  # 写入形参
    """打印列表中每个魔术师的名字。"""
    for magician in magicians:  # 遍历列表
        print(magician.title())  # 打印每个魔术师的名字

# 3.编写一个名为make_great()的函数
def make_great(magicians):
    # 新建一个列表,用于存储修改后的魔术师名字。
    great_magicians = []

    # 在每个魔术师的名字中都加入字样the Great,并将其添加到great_magicians中。
    while magicians:  # 无限循环
        magician = magicians.pop()  # 删除列表最后魔术师的名字
        great_magician = magician + ' the Great'  # 魔术师的名字中都加入字样the Great
        great_magicians.append(great_magician)  # 列表最后添加魔术师的新名字

    # 将修改后的名字放回到列表magicians中。
    for name in great_magicians:
        magicians.append(name)
    # 6
    return magicians  # 返回更改后的列表 
# 要在调用之前定义
magicians = ['chen si yuan', 'chen si yu', 'hui lin']  # 魔术师名字的列表

# 2.调用函数
print("原始的魔术师名字的列表")
show_magicians(magicians)  # 列表作为实参传入
print("*"*50)

# 调用函数对魔术师列表进行修改(传入的是副本)
print("调用函数改变魔术师名字的列表")
# 5.向它传递魔术师列表的拷贝。
great_magicians = make_great(magicians[:])  # 变量接收更改后的列表
show_magicians(great_magicians)  # 虽然更改了但只是副本
print("*"*50)

# 7
print("看看魔术师名字的列表变了没")
show_magicians(magicians)  # 原始的魔术师列表没变
"""练习8-12  三明治
编写一个函数,它接受顾客要在三明治中添加的一系列食材。
这个函数只有一个形参(它收集函数调用中提供的所有食材)
,并打印一条消息,对顾客点的三明治进行概述。调用这个函数三次,每次都提供不同数量的实参。"""

def make_sandwich(*items):  # 定义函数写入不定长形参:制作三明治(‘不定长形参’产品)
    """使用指定的食材制作三明治。"""
    print("\n我给你做个很棒的三明治:")  
    for item in items:  # 遍历列表
        print(f" ...正在制作你的 {item} 三明治")  
    print("你的三明治做好了!")  


make_sandwich('牛肉', '奶酪', '生菜','蜂蜜')  
make_sandwich('鸡肉', '菠菜', '番茄')
make_sandwich('羊肉', '鸭肉')
"""练习8-14  汽车
编写一个函数,将一辆汽车的信息存储在一个字典中。
这个函数总是接受制造商和型号,还接受任意数量的关键字实参。
这样调用这个函数:提供必不可少的信息,还有两个名称-值对,如颜色和选装配件。
这个函数必须能够像下面这样进行调用:
car = make_car('subaru', 'outback', color='blue', tow_package=True)"""

def make_car(manufacturer, model, **options):  # 定义函数写入形参:制作汽车(品牌,产地,‘选择是不定长形参’)
    """创建一个表示汽车的字典。"""
    car_dict = {'manufacturer': manufacturer.title(),  # 设置品牌,产地两个键值对并首字母大写
                'model': model.title(),}
    for option, value in options.items():  # 临时键和值在不定长形参里面循环
        car_dict[option] = value  # 再把不定长形参的键和值添加到字典
    return car_dict  # 返回制作汽车


my_outback = make_car('subaru', 'outback', color='blue',
                      tow_package=True)  # 因为不定长形参是个字典所以要传键值对
print(my_outback)  # 打印结果

my_old_accord = make_car('honda', 'accord', year=1991,
                         color='white', weight='1.5T')  # 因为是不定长形参所以不限键值对的数量
print(my_old_accord)  # 打印结果
"""练习8-15  打印模型 
把此文件命名为printing_models并保存"""

def print_models(unprinted_designs, completed_models):
    """
    模拟打印每个设计,直到没有未打印的设计为止。
    打印每个设计后,都将其移到列表completed_models中。
    """
    while unprinted_designs:
        current_design = unprinted_designs.pop()

        # 模拟根据设计制作3D打印模型的过程。
        print("Printing model: " + current_design)
        completed_models.append(current_design)


def show_completed_models(completed_models):
    """显示打印好的所有模型。"""
    print("\nThe following models have been printed:")
    for completed_model in completed_models:
        print(completed_model)

# unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']
# completed_models = []

# print_models(unprinted_designs, completed_models)
# show_completed_models(completed_models)
"""练习8-15  打印模型
就是在这个文件里把上面一个printing_models文件导入进来直接用"""

import printing_models as pf  # 导入printing_models模块起个pf的别名

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron']  # 准备打印模型列表
completed_models = []  # 打印好后存放的列表

pf.print_models(unprinted_designs, completed_models)  # 调用函数
pf.show_completed_models(completed_models)  # 调用函数
"""练习8-16  导入
导入模块调用函数的几种方法"""

import module  # 导入module模块
from module import aaa  # 导入module模块中的aaa函数
from module import aaa as a  # 导入module模块中的aaa函数起个别名
import module as a  # 导入module模块并起个别名
from module import*  # 导入模块里面全部函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值