Python编程从入门到实践 第八章:函数 练习答案记录

Python编程从入门到实践 第八章:函数 练习答案记录

练习题导航

  • Python编程从入门到实践 第八章:函数 练习答案记录
  • 8.1 定义函数
    • 8.1.1 向函数传递信息
    • 8.1.2 实参和形参
      • 练习8-1 消息 : 编写一个名为display_message() 的函数, 它打印一个句子, 指出你在本章学的是什么。调用这个函数, 确认显示的消息正确无误
      • 练习8-2 喜欢的图书 : 编写一个名为favorite_book() 的函数, 其中包含一个名为title 的形参。 这个函数打印一条消息,如One of my favorite books isAlice in Wonderland 。 调用这个函数, 并将一本图书的名称作为实参传递给它。
  • 8.2 传递实参
    • 8.2.1 位置实参
    • 8.2.2 关键字实参
    • 8.2.3 默认值
    • 8.2.4 等效的函数调用
    • 8.2.5 避免实参错误
      • 练习8-3 T恤 : 编写一个名为make_shirt() 的函数, 它接受一个尺码以及要印到T恤上的字样。
      • 练习8-4 大号T恤 : 修改函数make_shirt() , 使其在默认情况下制作一件印有字样“I love Python”的大号T恤。
      • 练习8-5 城市 : 编写一个名为describe_city() 的函数, 它接受一座城市的名字以及该城市所属的国家。
  • 8.3 返回值
    • 8.3.1 返回简单值
    • 8.3.2 让实参变成可选的
    • 8.3.3 返回字典
    • 8.3.4 结合使用函数和while循环
      • 练习8-6 城市名 : 编写一个名为city_country() 的函数, 它接受城市的名称及其所属的国家。
      • 练习8-7 专辑 : 编写一个名为make_album() 的函数, 它创建一个描述音乐专辑的字典。
      • 练习8-8 用户的专辑 : 在为完成练习8-7编写的程序中, 编写一个while 循环, 让用户输入一个专辑的歌手和名称。
  • 8.4 传递列表
    • 8.4.1 在函数中修改列表
    • 8.4.2 禁止函数修改列表
      • 练习8-9 魔术师 : 创建一个包含魔术师名字的列表, 并将其传递给一个名为show_magicians() 的函数, 这个函数打印列表中每个魔术师的名字。
      • 练习8-10 了不起的魔术师 : 在你为完成练习8-9而编写的程序中, 编写一个名为make_great() 的函数,对魔术师列表进行修改, 在每个魔术师的名字中都加入字样“theGreat”。 调用函数show_magicians() , 确认魔术师列表确实变了。
      • 练习8-11 不变的魔术师 : 修改你为完成练习8-10而编写的程序, 在调用函数make_great() 时, 向它传递魔术师列表的副本。
  • 8.5 传递任意数量实参
    • 8.5.1 结合使用位置实参和任意数量实参
    • 8.5.2 使用任意数量的关键字实参
      • 练习8-12 三明治 : 编写一个函数, 它接受顾客要在三明治中添加的一系列食材。 这个函数只有一个形参(它收集函数调用中提供的所有食材) ,并打印一条消息, 对顾客点的三明治进行概述。 调用这个函数三次, 每次都提供不同数量的实参。
      • 练习8-13 用户简介 : 复制前面的程序user_profile.py, 在其中调用build_profile() 来创建有关你的简介;调用这个函数时, 指定你的名和姓, 以及三个描述你的键-值对。
      • 练习8-14:汽车 编写一个函数,将一辆汽车的信息存储在字典中。
  • 8.6 将函数存储在模块中
    • 8.6.1 导入整个模块
    • 8.6.2 导入特定的函数
    • 8.6.3 使用as给函数指定别名
    • 8.6.4 使用as给模块指定别名
    • 8.6.5 导入模块中的所有函数
  • 8.7 函数编写指南
      • 练习8-15:打印模型 将示例printing_models.py中的函数放在一个名为printing_functions.py的文件中。在printing_models.py的开头编写一条import语句,并修改该文件以使用导入的函数
      • 练习8-16:导入 选择一个你编写的且只包含一个函数的程序,将该函数放在另一个文件中。在主程序文件中,使用下述各种方法导入这个函数,再调用它
      • 练习8-17:函数编写指南 选择你在本章中编写的三个程序,确保它们遵循了本节介绍的函数编写指南。
  • 8.8 小结

8.1 定义函数

8.1.1 向函数传递信息

8.1.2 实参和形参

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

def display_message():
    print("aa")

display_message()

Python编程从入门到实践 第八章:函数 练习答案记录_第1张图片

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

def favorite_book(title):
    print(f"One of my favorite books {title} in Wonderland")

favorite_book('a')

Python编程从入门到实践 第八章:函数 练习答案记录_第2张图片

8.2 传递实参

8.2.1 位置实参

8.2.2 关键字实参

8.2.3 默认值

8.2.4 等效的函数调用

8.2.5 避免实参错误

练习8-3 T恤 : 编写一个名为make_shirt() 的函数, 它接受一个尺码以及要印到T恤上的字样。

这个函数应打印一个句子, 概要地说明T恤的尺码和字样。
使用位置实参调用这个函数来制作一件T恤; 再使用关键字实参来调用这个函数。

def make_shirt(chima,T_str):
    print(f"T恤的尺码:{chima} 字样:{T_str}")

make_shirt(11,'a')
make_shirt(chima=11,T_str='b')
make_shirt(T_str='c',chima=111)

Python编程从入门到实践 第八章:函数 练习答案记录_第3张图片

练习8-4 大号T恤 : 修改函数make_shirt() , 使其在默认情况下制作一件印有字样“I love Python”的大号T恤。

调用这个函数来制作如下T恤: 一件印有默认字样的大号T恤、 一件印有默认字样的中号T恤和一件印有其他字样的T恤(尺码无关紧要) 。

def make_shirt(chima,T_str='I love Python'):
    print(f"T恤的尺码:{chima} 字样:{T_str}")

make_shirt(11)
make_shirt(chima=11,T_str='b')
make_shirt(T_str='c',chima=111)

Python编程从入门到实践 第八章:函数 练习答案记录_第4张图片

练习8-5 城市 : 编写一个名为describe_city() 的函数, 它接受一座城市的名字以及该城市所属的国家。

这个函数应打印一个简单的句子, 如Reykjavik is in Iceland 。 给用于存储国家的形参指定默认值。
为三座不同的城市调用这个函数, 且其中至少有一座城市不属于默认国家。

def describe_city(city='Reykjavik is in Iceland'):
    print(city)

describe_city()
describe_city('aaa')

Python编程从入门到实践 第八章:函数 练习答案记录_第5张图片

8.3 返回值

8.3.1 返回简单值

8.3.2 让实参变成可选的

8.3.3 返回字典

8.3.4 结合使用函数和while循环

练习8-6 城市名 : 编写一个名为city_country() 的函数, 它接受城市的名称及其所属的国家。

这个函数应返回一个格式类似于下面这样的字符串:“Santiago, Chile”
至少使用三个城市-国家对调用这个函数, 并打印它返回的值

def city_country(name,country):
    return f"{name},{country}"
hold='yes'
city_countrys=[]
while hold=='yes':
    name=input("城市的名称:")
    country=input("所属国家:")
    city_countrys.append(city_country(name,country))
    hold=input("是否继续输入:\'yes or no\'")
for cc in city_countrys:
    print(cc)

Python编程从入门到实践 第八章:函数 练习答案记录_第6张图片
Python编程从入门到实践 第八章:函数 练习答案记录_第7张图片

练习8-7 专辑 : 编写一个名为make_album() 的函数, 它创建一个描述音乐专辑的字典。

这个函数应接受歌手的名字和专辑名, 并返回一个包含这两项信息的字典。 使用这个函数创建三个表示不同专辑的字典, 并打印每个返回的值,
以核实字典正确地存储了专辑的信息。给函数make_album() 添加一个可选形参,以便能够存储专辑包含的歌曲数。
如果调用这个函数时指定了歌曲数, 就将这个值添加到表示专辑的字典中。 调用这个函数, 并至少在一次调用中指定专辑包含的歌曲数。

def make_album(people_name,music_name,music_digit=0):
    information = {}
    information[people_name]=music_name
    if music_digit!=0:
        information['digit']=music_digit
    return information

print(make_album('a','b'))
print(make_album('c','d'))
print(make_album('m','n',10))

Python编程从入门到实践 第八章:函数 练习答案记录_第8张图片

练习8-8 用户的专辑 : 在为完成练习8-7编写的程序中, 编写一个while 循环, 让用户输入一个专辑的歌手和名称。

获取这些信息后, 使用它们来调用函数make_album() , 并将创建的字典打印出来。 在这个while 循环中, 务必要提供退出途径。

def make_album(people_name,music_name,music_digit=0):
    information = {}
    information[people_name]=music_name
    if music_digit!=0:
        information['digit']=music_digit
    return information

ct='y'
while ct=='y':
    people_name=input("输入歌手名字:")
    music_name=input("输入歌曲名字:")
    print(make_album(people_name,music_name))
    ct=input("是否继续:\'y or n\'")

Python编程从入门到实践 第八章:函数 练习答案记录_第9张图片

8.4 传递列表

8.4.1 在函数中修改列表

8.4.2 禁止函数修改列表

练习8-9 魔术师 : 创建一个包含魔术师名字的列表, 并将其传递给一个名为show_magicians() 的函数, 这个函数打印列表中每个魔术师的名字。

def show_magicians(name):
    for a in name:
        print(a)
name=['a','b']
show_magicians(name)

Python编程从入门到实践 第八章:函数 练习答案记录_第10张图片

练习8-10 了不起的魔术师 : 在你为完成练习8-9而编写的程序中, 编写一个名为make_great() 的函数,对魔术师列表进行修改, 在每个魔术师的名字中都加入字样“theGreat”。 调用函数show_magicians() , 确认魔术师列表确实变了。

8-11 不变的魔术师 : 修改你为完成练习8-10而编写的程序, 在调用函数make_great() 时, 向它传递魔术师列表的副本。
由于不想修改原始列表, 请返回修改后的列表, 并将其存储到另一个列表中。 分别使用这两个列表来调用show_magicians() ,
确认一个列表包含的是原来的魔术师名字, 而另一个列表包含的是添加了字样“the Great”的魔术师名字。
"""
def show_magicians(name):
    for a in name:
        print(a)
def make_great(lt):
    while lt:
        name_change.append(lt.pop()+" the Great")


name=['a','b']
name_change=[]
make_great(name)
show_magicians(name)
show_magicians(name_change)

Python编程从入门到实践 第八章:函数 练习答案记录_第11张图片

练习8-11 不变的魔术师 : 修改你为完成练习8-10而编写的程序, 在调用函数make_great() 时, 向它传递魔术师列表的副本。

由于不想修改原始列表, 请返回修改后的列表, 并将其存储到另一个列表中。 分别使用这两个列表来调用show_magicians() , 确认一个列表包含的是原来的魔术师名字, 而另一个列表包含的是添加了字样“the Great”的魔术师名字。

def show_magicians(name):
    for a in name:
        print(a)
def make_great(lt):
    while lt:
        name_change.append(lt.pop()+" the Great")


name=['a','b']
name_change=[]
make_great(name[:])
show_magicians(name)
show_magicians(name_change)

Python编程从入门到实践 第八章:函数 练习答案记录_第12张图片

8.5 传递任意数量实参

8.5.1 结合使用位置实参和任意数量实参

8.5.2 使用任意数量的关键字实参

练习8-12 三明治 : 编写一个函数, 它接受顾客要在三明治中添加的一系列食材。 这个函数只有一个形参(它收集函数调用中提供的所有食材) ,并打印一条消息, 对顾客点的三明治进行概述。 调用这个函数三次, 每次都提供不同数量的实参。

def sandswith_food(food):
    for n,m in food.items():
        print(f"{n}:{m}")
food={
    'aaa':'Az'
    }
sandswith_food(food)

Python编程从入门到实践 第八章:函数 练习答案记录_第13张图片

练习8-13 用户简介 : 复制前面的程序user_profile.py, 在其中调用build_profile() 来创建有关你的简介;调用这个函数时, 指定你的名和姓, 以及三个描述你的键-值对。

def build_profile(first,last,**user_info):
    user_info['first_name']=first
    user_info['last_name']=last
    return user_info

user_profile=build_profile('liu','yi zheng',location='princeton',field='physics')
print(user_profile)

Python编程从入门到实践 第八章:函数 练习答案记录_第14张图片

练习8-14:汽车 编写一个函数,将一辆汽车的信息存储在字典中。

这个函数总是接受制造商和型号,还接受任意数量的关键字实参。 这样调用该函数:提供必不可少的信息,以及两个名称值对,如颜色和选装配件。
这个函数必须能够像下面这样进行调用:
car=make_car(‘subaru’,‘outback’,color=‘blue’,tow_package=True)
打印返回的字典,确认正确地处理了所有的信息

def make_car(creat,byts,**car):
    car['a']=creat
    car['b']=byts
    return car
car=make_car('subaru','outback',color='blue',tow_package=True)
print(car)

Python编程从入门到实践 第八章:函数 练习答案记录_第15张图片

8.6 将函数存储在模块中

8.6.1 导入整个模块

8.6.2 导入特定的函数

8.6.3 使用as给函数指定别名

8.6.4 使用as给模块指定别名

8.6.5 导入模块中的所有函数

8.7 函数编写指南

练习8-15:打印模型 将示例printing_models.py中的函数放在一个名为printing_functions.py的文件中。在printing_models.py的开头编写一条import语句,并修改该文件以使用导入的函数

主函数

import printing_functions

模块中

unprited_designs=['phone case','robot pendant','dodecahedron']
completed_models=[]

while unprited_designs:
    current_design=unprited_designs.pop()
    print(f"Printing model:{current_design}")
    completed_models.append(current_design)

print("\nThe following models have been printed:")
for completed_model in completed_models:
    print(completed_model)

Python编程从入门到实践 第八章:函数 练习答案记录_第16张图片

输出

Python编程从入门到实践 第八章:函数 练习答案记录_第17张图片

练习8-16:导入 选择一个你编写的且只包含一个函数的程序,将该函数放在另一个文件中。在主程序文件中,使用下述各种方法导入这个函数,再调用它

import module_name
from module_name import function_name
from module_name import function_name as fn
import module_name as mn from
module_name import *

子函数

def function_name(first_name,last_name,**digit):
    digit['first_name']=first_name
    digit['last_name']=last_name
    return digit

Python编程从入门到实践 第八章:函数 练习答案记录_第18张图片

主函数

1、import module_name

import module_name

print(module_name.function_name('yuan','lin',city='Bei jin'))

Python编程从入门到实践 第八章:函数 练习答案记录_第19张图片

2、from module_name import function_name

from module_name import function_name

print(function_name('yuan','lin',city='Bei jin'))

Python编程从入门到实践 第八章:函数 练习答案记录_第20张图片

3、from module_name import function_name as fn

from module_name import function_name as fn

print(fn('yuan','lin',city='Bei jin'))

Python编程从入门到实践 第八章:函数 练习答案记录_第21张图片

4、import module_name as mn from

import module_name as mn

print(mn.function_name('yuan','lin',city='Bei jin'))

Python编程从入门到实践 第八章:函数 练习答案记录_第22张图片

5、module_name import *

from module_name import *

print(function_name('yuan','lin',city='Bei jin'))

Python编程从入门到实践 第八章:函数 练习答案记录_第23张图片

练习8-17:函数编写指南 选择你在本章中编写的三个程序,确保它们遵循了本节介绍的函数编写指南。

8.8 小结

你可能感兴趣的:(python学习,python,算法,学习)