IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python编程:从入门到实践(第二版)随书敲代码 第8章 函数 -> 正文阅读

[Python知识库]Python编程:从入门到实践(第二版)随书敲代码 第8章 函数

greeter.py

def?greet_user(username):

????"""显示简单的问候语."""

????print(f"Hello,?{username.title()}")

greet_user('jesse')

display_message.py

#?练习?8-1?消息

#?编写一个名为?display_message()?的函数,它打印一个句子,指出你在本章学的是什么。

#?调用这个函数,确认显示的消息正确无误。

def?display_message():

????"""显示一条消息,指出你在本章学的是什么."""

????msg?=?"I'm?learning?to?store?code?in?functions."

????print(msg)

????

display_message()

favorite_book.py

#?练习?8-2?喜欢的图书

#?编写一个名为?favorite_book()?的函数,其中包含一个名为?title?的形参。

#?这个函数打印一条消息,如?One?of?my?favorite?books?is?Alice?in?Wonderland。

#?调用这个函数,并将一本图书的名称作为实参传递给它。

def?favorite_book(title):

????"""显示一条消息,指出喜欢的一本图书。"""

????print(f"{title}?is?one?of?my?favorite?books.")

favorite_book('Alice?in?Wonderland')

pets.py

def?describe_pet(animal_type,?pet_name):

????"""显示宠物的信息"""

????print(f"\nI?have?a?{animal_type}.")

????print(f"My?{animal_type}'s?name?is?{pet_name.title()}.")

#?位置实参

describe_pet('hamster',?'harry')

#?再次传递参数

describe_pet('dog',?'willie')

#?位置实参

describe_pet(animal_type='hamster',?pet_name='harry')

describe_pet(pet_name='harry',?animal_type='hamster')

pets1.py

#?给其中形参设置默认值

def?describe_pet(pet_name,?animal_type='dog'):

????"""显示宠物的信息"""

????print(f"\nI?have?a?{animal_type}.")

????print(f"My?{animal_type}'s?name?is?{pet_name.title()}.")

describe_pet(pet_name='willie')

describe_pet('willie')

#?等效的函数调用

describe_pet('harry',?'hamster')

describe_pet(pet_name='harry',?animal_type='hamster')

describe_pet(animal_type='hamster',pet_name='harry')

make_shirt.py

#?练习?8-3?T?恤

#?编写一个名为?make_shirt()?的函数,它接受尺码以及要印到?T?恤上的字样。

#?这个函数应打印一个句子,概要地说明?T?恤衫的尺码和字样。

#?使用位置实参调用这个函数来制作一件?T?恤,再使用关键字实参来调用这个函数。

def?make_shirt(size,?message):

????"""概述要制作的?T?恤什么样。"""

????print(f"\nI'm?going?to?make?a?{size}?T-shirt.")

????print(f'It?will?say,?"{message}"')

make_shirt('large',?'I?love?Python!')

make_shirt1.py

#?练习?8-4?大号?T?恤

#?修改函数?make_shirt()?,使其在默认情况下制作一件印有

#??“I?love?Python”?字样的大号?T?恤。

#?调用这个函数来制作如下?T?恤:一件印有默认字样的大号?T?恤、

#?一件印有默认字样的中号?T?恤、一件印有其他字样的?T?恤(尺码无关紧要)。

def?make_shirt(size='large',?message='I?love?Python!'):

????"""概述要制作的?T?恤什么样。"""

????print(f"\nI'm?going?to?make?a?{size}?T-shirt.")

????print(f'It?will?say,?"{message}"')

make_shirt()

make_shirt(size='medium')

make_shirt(message='I?love?Py...')

describe_city.py

#?练习?8-5?城市

#?编写一个名为?describe_city()?的函数,它接受一座城市的名称和所属的国家。

#?这个函数应打印一个简单的句子,如?Reykjavik?is?in?Iceland。

#?给用于存储国家的形参指定默认值。为三座不同的城市调用这个函数,

#?且其中至少有一座城市不属于默认国家。

def?describe_city(city,?country='chile'):

????"""描述城市."""

????msg?=?f"{city.title()}?is?in?{country}."

????print(msg)

describe_city('santiago')

describe_city('reykjavik',?'iceland')

describe_city('punta?arenas')

formatted_name.py

#?返回值

def?get_formatted_name(first_name,?middle_name,last_name):

????"""返回整洁的值."""

????full_name?=?f"{first_name}?{middle_name}?{last_name}"

????return?full_name.title()

musician?=?get_formatted_name('john',?'lee',?'hooker')

print(musician)

formatted_name1.py

#?让实参变成可选的

def?get_formatted_name(first_name,?last_name,?middle_name=''):

????"""返回整洁的姓名."""

????if?middle_name:

????????full_name?=?f"{first_name}?{middle_name}?{last_name}"

????else:

????????full_name?=?f"{first_name}?{last_name}"

????return?full_name.title()

musician?=?get_formatted_name('jimi',?'hendrix')

print(musician)

musician?=?get_formatted_name('john',?'hooker',?'lee')

print(musician)

person.py

#?返回字典

def?build_person(first_name,?last_name):

????"""返回一个字典,其中包含有关一个人的信息."""

????person?=?{'first':?first_name,?'last':?last_name}

????return?person

musician?=?build_person('jimi',?'hendrix')

print(musician)

person1.py

def?build_person(first_name,?last_name,?age=None):

????"""返回一个字典,其中包含有关一个人的信息."""

????person?=?{'first':?first_name,?'last':?last_name}

????if?age:

????????person['age']?=?age

????return?person

musician?=?build_person('jimi',?'hendrix',?age=27)

print(musician)

greeter1.py

def?get_formatted_name(first_name,?last_name):

????"""返回整洁的姓名."""

????full_name?=?f"{first_name}?{last_name}"

????return?full_name.title()

#?这是一个无限循环

while?True:

????print("\nPlease?tell?me?your?name:")

????print("(Enter?'q'?at?any?time?to?quit)")

????f_name?=?input("First?name:?")

????if?f_name?==?'q':

????????break

????l_name?=?input("Last?name:?")

????if?l_name?==?'q':

????????break

????formatted_name?=?get_formatted_name(f_name,?l_name)

????print(f"\nHello,?{formatted_name}!")

city_country.py

#?练习?8-6?城市名

#?编写一个名为?city_country()?的函数,它接受城市的名称和所属的国家。

#?这个函数应返回一个格式类似于下面的字符串:"Santiago,?Chile"

#?至少使用三个城市-国家对调用这个函数,并打印返回的值。

def?city_country(city,?country):

????"""返回一个格式类似于'Santiago,?Chile'的字符串"""

????return?f"{city.title()},?{country.title()}"

city?=?city_country('santiago',?'chile')

print(city)

city?=?city_country('ushuaia',?'argentina')

print(city)

city?=?city_country('longyearbyen',?'svalbard')

print(city)

make_album.py

#?练习?8-7?专辑

#?编写一个名为?make_album()?的函数,它创建一个描述音乐专辑的字典。

#?这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。

#?使用这个函数创建三个表示不同专辑的字典,并打印每个返回的值,

#?以核实字典正确地存储了专辑的信息。给函数?make_album()?添加一个可选形参,

#?以便能够存储专辑包含的歌曲数。

#?如果调用这个函数时指定了歌曲数,就将这个值添加到表示专辑的字典中。

#?调用这个函数,并至少在一次调用中指定专辑包含的歌曲数。

def?make_album(artist,?title,?tracks=None):

????"""创建一个包含专辑信息的字典."""

????album_dict?=?{

????????'artist':?artist.title(),

????????'title':?title.title(),

????????}

????if?tracks:

????????album_dict['tracks']?=?tracks

????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)

album?=?make_album('iron?maiden',?'piece?of?mind',?tracks=8)

print(album)

make_album1.py

#?练习?8-8?用户的专辑

#?在为完成练习?8-7?编写的程序中,编写一个?while?循环,

#?让用户输入一个专辑的歌手和名称。

#?获取这些信息后,使用它们来调用函数?make_album()?并将创建的字典打印出来。

#?在这个?while?循环中,务必提供退出途径。

def?make_album(artist,?title,?tracks=None):

????"""创建一个包含专辑信息的字典."""

????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?the?artist??"

#?让用户知道如何退出.

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

while?True:

????title?=?input(title_prompt)

????if?title?==?'q':

????????break

????artist?=?input(artist_prompt)

????if?artist?==?'q':

????????break

????album?=?make_album(artist,?title)

????print(album)

print("\nThanks?for?responding!")

greeter_users.py

#?传递列表

def?greet_users(names):

????"""向列表中的每位用户发出简单的问候."""

????for?name?in?names:

????????msg?=?f"Hello,?{name.title()}!"

????????print(msg)

usernames?=?['hannah',?'ty',?'margot']

greet_users(usernames)

printing_models.py

#?在函数中修改列表

#?首先创建一个列表,其中包含一些要打印的设计.

unprinted_designs?=?['phone?case',?'robot?pendant',?'dodecahedron']

completed_models?=?[]

#?模拟打印每个设计,直到没有未打印的设计为止.

#?打印每个设计后,都将其移到列表completed_models中.

while?unprinted_designs:

????current_design?=?unprinted_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)

message.py

#?练习?8-9?消息

#?创建一个列表,其中包含一系列简短的文本消息;

#?将这个列表传递给一个名为show_messages()?的函数,它打印列表中的每条文本消息。

def?show_messages(messages):

????"""打印列表中的所有消息"""

????for?message?in?messages:

????????print(message)

message?=?["hello!",?"hey!",?"yaaa!"]

show_messages(message)

send_message.py

#?练习?8-10?发送消息

#?在你为完成练习?8-9?而编写的程序中,编写一个名为?send_messages()?的函数,

#?将每条消息都打印出来并移到一个名为?sent_messages?的列表中。

#?调用函数?send_messages()?,再将两个列表都打印出来,确认正确地移动了消息。

def?show_messages(messages):

????"""打印列表中的所有消息."""

????for?message?in?messages:

????????print(message)

def?send_messages(messages,sent_messages):

????"""打印每条消息,再将其移到列表sent_messages中."""

????print("\nSending?all?messages:")

????while?messages:

????????current_message?=?messages.pop()

????????print(current_message)

????????sent_messages.append(current_message)

messages?=?["hello!",?"hey!",?"yaaa!"]

show_messages(messages)

sent_messages?=?[]

send_messages(messages,sent_messages)

print("\nFinal?lists:")

print(messages)

print(sent_messages)

send_message1.py

#?练习?8-11?消息归档

#?修改你为完成练习?8-10?而编写的程序,

#?在调用函数?send_messages()?时,向它传递消息列表的副本。

#?调用函数?send_messages()?后,将两个列表都打印出来,确认保留了原始列表中的消息。

def?show_messages(messages):

????"""打印列表中的所有消息."""

????for?message?in?messages:

????????print(message)

def?send_messages(messages,sent_messages):

????"""打印每条消息,再将其移到列表sent_messages中."""

????print("\nSending?all?messages:")

????while?messages:

????????current_message?=?messages.pop()

????????print(current_message)

????????sent_messages.append(current_message)

messages?=?["hello!",?"hey!",?"yaaa!"]

show_messages(messages)

sent_messages?=?[]

send_messages(messages[:],sent_messages)

print("\nFinal?lists:")

print(messages)

print(sent_messages)

pizza.py

#?传递任意数量的实参

def?make_pizza(*toppings):

????"""概述要制作的比萨."""

????print("\nMaking?a?pizza?with?the?following?toppings:")

????for?topping?in?toppings:

????????print(f"-?{topping}")

make_pizza('pepperoni')

make_pizza('mushrooms',?'green?peppers',?'extra?cheese')

pizza1.py

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

def?make_pizza(size,?*toppings):

????"""概述要制作的比萨."""

????print(f"\nMaking?a?{size}-inch?pizza?with?the?following?toppings:")

????for?topping?in?toppings:

????????print(f"-?{topping}")

make_pizza(16,?'pepperoni')

make_pizza(12,?'mushrooms',?'green?peppers',?'extra?cheese')

user_profile.py

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

def?build_profile(first,?last,?**user_info):

????"""创建一个字典,其中包含我们知道的有关用户的一切."""

????user_info['first_name']?=?first

????user_info['last_name']?=?last

????return?user_info

user_profile?=?build_profile('albert',?'einstein',

????????????????????????????location='princeton',

????????????????????????????field='physics',

????????????????????????????)

print(user_profile)

make_sandwich.py

#?练习?8-12?三明治

#?编写一个函数,它接受顾客要在三明治中添加的一系列食材。这个函数只有一个形参

#?(它收集函数调用中提供的所有食材),并打印一条消息,对顾客点的三明治进行概述。

#?调用这个函数三次,每次都提供不同数量的实参。

def?make_sandwich(*items):

????"""使用制定的食材制作三明治"""

????print("\nI'll?make?you?a?great?sandwich:")

????for?item?in?items:

????????print(f"?...adding?{item}?to?your?sandwich.")

????print("Your?sandwich?is?ready!")

make_sandwich('roast?beef',?'cheddar?cheese',?'lettuce',?'honey?dijon')

make_sandwich('turkey',?'apple?slices',?'honey?mustard')

make_sandwich('peanut?butter',?'strawberry?jam')

user_profile1.py

#?练习?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('W',?'J',

????????????????????????????age='4',

????????????????????????????location='GX',

????????????????????????????field='R.W',

????????????????????????????)

print(user_profile)

car.py

#?练习?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',?

????headlights='popup')

print(my_old_accord)

--------------------------------------------------------------------------------------------------------------------------

pizzas.py

"""模块文件"""

def?make_pizza(size,*toppings):

????"""概述要制作的比萨"""

????print(f"\nMaking?a?{size}-inch?pizza?with?the?following?toppings.")

????for?topping?in?toppings:

????????print(f"-?{topping}")

--------------------------------------------------------------------------------------------------------------------------

#?导入pizzas.py整个模块

import?pizzas

pizzas.make_pizza(16,'pepperoni')

pizzas.make_pizza(12,'mushrooms','green?peppers','extra?cheese')

--------------------------------------------------------------------------------------------------------------------------

#?导入特定的函数

from?pizzas?import?make_pizza

make_pizza(16,'pepperoni')

make_pizza(12,'mushrooms','green?peppers','extra?cheese')

--------------------------------------------------------------------------------------------------------------------------

#?使用as给函数指定别名

from?pizzas?import?make_pizza?as?mp

mp(16,'pepperoni')

mp(12,'mushrooms','green?peppers','extra?cheese')

--------------------------------------------------------------------------------------------------------------------------

#?使用as给模块指定别名

import?pizzas?as?p

p.make_pizza(16,'pepperoni')

p.make_pizza(12,'mushrooms','green?peppers','extra?cheese')

--------------------------------------------------------------------------------------------------------------------------

#?使用星号(*)运算符导入模块之中的所有函数

from?pizzas?import?*

make_pizza(16,'pepperoni')

make_pizza(12,'mushrooms','green?peppers','extra?cheese')

--------------------------------------------------------------------------------------------------------------------------

printing_functions.py

"""与打印?3D?模型相关的函数。"""

def?print_models(unprinted_designs,?completed_models):

????"""

????模拟打印每个设计,直到没有未打印的设计为止。

????打印每个设计后,都将其移到列表?completed_models?中。

????"""

????while?unprinted_designs:

????????current_design?=?unprinted_designs.pop()

????????#?模拟根据设计制作?3D?打印模型的过程。

????????print(f"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)

--------------------------------------------------------------------------------------------------------------------------

printing_models.py

#?练习?8-15?打印模型

#?将?printing_model.py中的函数放在另一个名为?printing_functions.py?的文件中。

#?在printing_models.py的开头编写一条?import?语句,并修改这个文件以使用导入的函数。

import?printing_functions?as?pf

unprinted_designs?=?['iphone?case',?'robot?pendant',?'dodecahedron']

completed_models?=?[]

pf.print_models(unprinted_designs,?completed_models)

pf.show_completed_models(completed_models)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:07:30  更:2021-07-22 14:09:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 23:49:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码