做宣传海报的网站,响应式网站如何设计,怎样用别人的网站做修改,微商平台目录 编辑
7.3.2 删除包含特定值的所有列表元素
pets.py
7.3.3 使用用户输入来填充字典
mountain_poll.py
7.4 小结
第8章
函 数
8.1 定义函数
greeter.py
8.1.1 向函数传递信息
8.1.2 实参和形参
8.2.1 位置实参
2. 位置实参的顺序很重要
8.2.2 关键字实参
往…目录 编辑
7.3.2 删除包含特定值的所有列表元素
pets.py
7.3.3 使用用户输入来填充字典
mountain_poll.py
7.4 小结
第8章
函 数
8.1 定义函数
greeter.py
8.1.1 向函数传递信息
8.1.2 实参和形参
8.2.1 位置实参
2. 位置实参的顺序很重要
8.2.2 关键字实参
往期快速传送门在文章最后 7.3.2 删除包含特定值的所有列表元素 在第3章中我们使用函数remove()来删除列表中的特定值这之所以可行是因为要删除 的值在列表中只出现了一次。如果要删除列表中所有包含特定值的元素该怎么办呢 假设你有一个宠物列表其中包含多个值为cat的元素。要删除所有这些元素可不断运 行一个while循环直到列表中不再包含值cat如下所示 pets.py pets [dog, cat, dog, goldfish, cat, rabbit, cat]
print(pets)
while cat in pets:pets.remove(cat)
print(pets) 我们首先创建了一个列表其中包含多个值为cat的元素。打印这个列表后Python进入 while循环因为它发现cat在列表中至少出现了一次。进入这个循环后Python删除第一个cat 并返回到while代码行然后发现cat还包含在列表中因此再次进入循环。它不断删除cat 直到这个值不再包含在列表中然后退出循环并再次打印列表 [dog, cat, dog, goldfish, cat, rabbit, cat]
[dog, dog, goldfish, rabbit]
7.3.3 使用用户输入来填充字典 可使用while循环提示用户输入任意数量的信息。下面来创建一个调查程序其中的循环每 次执行时都提示输入被调查者的名字和回答。我们将收集的数据存储在一个字典中以便将回答 同被调查者关联起来 mountain_poll.py responses {}
# 设置一个标志指出调查是否继续
polling_active True
while polling_active:# 提示输入被调查者的名字和回答
1 name input(\nWhat is your name? )
response input(Which mountain would you like to climb someday? )# 将答卷存储在字典中
2 responses[name] response# 看看是否还有人要参与调查
3 repeat input(Would you like to let another person respond? (yes/ no) )if repeat no:polling_active False
# 调查结束显示结果
print(\n--- Poll Results ---)
4 for name, response in responses.items():print(name would like to climb response .) 这个程序首先定义了一个空字典responses并设置了一个标志polling_active用于 指出调查是否继续。只要polling_active为TruePython就运行while循环中的代码。 在这个循环中提示用户输入其用户名及其喜欢爬哪座山见1。将这些信息存储在字典 responses中见2然后询问用户调查是否继续见3。如果用户输入yes程序将再次进入 while循环如果用户输入no标志polling_active将被设置为False而while循环将就此结束。 最后一个代码块见4显示调查结果。 如果你运行这个程序并输入一些名字和回答输出将类似于下面这样 What is your name? Eric
Which mountain would you like to climb someday? Denali
Would you like to let another person respond? (yes/ no) yes
What is your name? Lynn
Which mountain would you like to climb someday? Devils Thumb
Would you like to let another person respond? (yes/ no) no
--- Poll Results ---
Lynn would like to climb Devils Thumb.
Eric would like to climb Denali.
7.4 小结 在本章中你学习了如何在程序中使用input()来让用户提供信息如何处理文本和数字 输入以及如何使用while循环让程序按用户的要求不断地运行多种控制while循环流程的方式 设置活动标志、使用break语句以及使用continue语句如何使用while循环在列表之间移动元素 以及如何从列表中删除所有包含特定值的元素如何结合使用while循环和字典。 在第8章中你将学习函数。函数让你能够将程序分成多个很小的部分其中每部分都负责 完成一项具体任务。你可以根据需要调用同一个函数任意次还可将函数存储在独立的文件中。 使用函数可让你编写的代码效率更高更容易维护和排除故障还可在众多不同的程序中重用。 第8章
函 数
8.1 定义函数 下面是一个打印问候语的简单函数名为greet_user() greeter.py 1 def greet_user():
2 显示简单的问候语
3 print(Hello!)
4 greet_user() 这个示例演示了最简单的函数结构。1处的代码行使用关键字def来告诉Python你要定义一个 函数。这是函数定义向Python指出了函数名还可能在括号内指出函数为完成其任务需要什么 样的信息。在这里函数名为greet_user()它不需要任何信息就能完成其工作因此括号是空 的即便如此括号也必不可少。最后定义以冒号结尾。 紧跟在def greet_user():后面的所有缩进行构成了函数体。2处的文本是被称为文档字符串 docstring的注释描述了函数是做什么的。文档字符串用三引号括起Python使用它们来生成有关程序中函数的文档。 代码行print(Hello!)见3是函数体内的唯一一行代码greet_user()只做一项工作 打印Hello!。 要使用这个函数可调用它。函数调用让Python执行函数的代码。要调用函数可依次指定 函数名以及用括号括起的必要信息如4处所示。由于这个函数不需要任何信息因此调用它时 只需输入greet_user()即可。和预期的一样它打印Hello! Hello!
8.1.1 向函数传递信息 只需稍作修改就可以让函数greet_user()不仅向用户显示Hello!还将用户的名字用作抬 头。为此可在函数定义def greet_user()的括号内添加username。通过在这里添加username 就可让函数接受你给username指定的任何值。现在这个函数要求你调用它时给username指定一 个值。调用greet_user()时可将一个名字传递给它如下所示 def greet_user(username):
显示简单的问候语print(Hello, username.title() !)
greet_user(jesse) 代码greet_user(jesse)调用函数greet_user()并向它提供执行print语句所需的信息。这 个函数接受你传递给它的名字并向这个人发出问候 Hello, Jesse! 同样greet_user(sarah)调用函数greet_user()并向它传递sarah打印Hello, Sarah!。 你可以根据需要调用函数greet_user()任意次调用时无论传入什么样的名字都会生成相应的 输出。 8.1.2 实参和形参 前面定义函数greet_user()时要求给变量username指定一个值。调用这个函数并提供这种 信息人名时它将打印相应的问候语。 在函数greet_user()的定义中变量username是一个形参——函数完成其工作所需的一项信 息。在代码greet_user(jesse)中值jesse是一个实参。实参是调用函数时传递给函数的信 息。我们调用函数时将要让函数使用的信息放在括号内。在greet_user(jesse)中将实参 jesse传递给了函数greet_user()这个值被存储在形参username中。 注意 大家有时候会形参、实参不分因此如果你看到有人将函数定义中的变量称为实参或将 函数调用中的变量称为形参不要大惊小怪。 8.2 传递实参 鉴于函数定义中可能包含多个形参因此函数调用中也可能包含多个实参。向函数传递实参 的方式很多可使用位置实参这要求实参的顺序与形参的顺序相同也可使用关键字实参其 中每个实参都由变量名和值组成还可使用列表和字典。下面来依次介绍这些方式。 8.2.1 位置实参 你调用函数时Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此 最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。 为明白其中的工作原理来看一个显示宠物信息的函数。这个函数指出一个宠物属于哪种动 物以及它叫什么名字如下所示 1 def describe_pet(animal_type, pet_name):显示宠物的信息print(\nI have a animal_type .)print(My animal_type s name is pet_name.title() .)
2 describe_pet(hamster, harry) 这个函数的定义表明它需要一种动物类型和一个名字见1。调用describe_pet()时需 要按顺序提供一种动物类型和一个名字。例如在前面的函数调用中实参hamster存储在形 参animal_type中而实参harry存储在形参pet_name中见2。在函数体内使用了这两个形 参来显示宠物的信息。 输出描述了一只名为Harry的仓鼠 I have a hamster.
My hamsters name is Harry. 1. 调用函数多次 你可以根据需要调用函数任意次。要再描述一个宠物只需再次调用describe_pet()即可 def describe_pet(animal_type, pet_name):显示宠物的信息print(\nI have a animal_type .)print(My animal_type s name is pet_name.title() .)
describe_pet(hamster, harry) 第二次调用describe_pet()函数时我们向它传递了实参dog和willie。与第一次调用时 一样Python将实参dog关联到形参animal_type并将实参willie关联到形参pet_name。与前 面一样这个函数完成其任务但打印的是一条名为Willie的小狗的信息。至此我们有一只名 为Harry的仓鼠还有一条名为Willie的小狗 I have a hamster.
My hamsters name is Harry.
I have a dog.
My dogs name is Willie. 调用函数多次是一种效率极高的工作方式。我们只需在函数中编写描述宠物的代码一次然 后每当需要描述新宠物时都可调用这个函数并向它提供新宠物的信息。即便描述宠物的代码 增加到了10行你依然只需使用一行调用函数的代码就可描述一个新宠物。 在函数中可根据需要使用任意数量的位置实参Python将按顺序将函数调用中的实参关联 到函数定义中相应的形参。 2. 位置实参的顺序很重要 使用位置实参来调用函数时如果实参的顺序不正确结果可能出乎意料 def describe_pet(animal_type, pet_name):显示宠物的信息print(\nI have a animal_type .)print(My animal_type s name is pet_name.title() .)
describe_pet(harry, hamster) 在这个函数调用中我们先指定名字再指定动物类型。由于实参harry在前这个值将 存储到形参animal_type中同理hamster将存储到形参pet_name中。结果是我们得到了一个 名为Hamster的harry I have a harry.
My harrys name is Hamster. 如果结果像上面一样搞笑请确认函数调用中实参的顺序与函数定义中形参的顺序一致。 8.2.2 关键字实参 关键字实参是传递给函数的名称—值对。你直接在实参中将名称和值关联起来了因此向函 数传递实参时不会混淆不会得到名为Hamster的harry这样的结果。关键字实参让你无需考虑函 数调用中的实参顺序还清楚地指出了函数调用中各个值的用途。 下面来重新编写pets.py在其中使用关键字实参来调用describe_pet() def describe_pet(animal_type, pet_name):显示宠物的信息print(\nI have a animal_type .)print(My animal_type s name is pet_name.title() .)
describe_pet(animal_typehamster, pet_nameharry) 函数describe_pet()还是原来那样但调用这个函数时我们向Python明确地指出了各个实 参对应的形参。看到这个函数调用时Python知道应该将实参hamster和harry分别存储在形 参animal_type和pet_name中。输出正确无误它指出我们有一只名为Harry的仓鼠。 关键字实参的顺序无关紧要因为Python知道各个值该存储到哪个形参中。下面两个函数调 用是等效的 describe_pet(animal_typehamster, pet_nameharry)
describe_pet(pet_nameharry, animal_typehamster) 注意 使用关键字实参时务必准确地指定函数定义中的形参名。 Python核心知识点整理大全12-笔记-CSDN博客
往期快速传送门在文章最后