1.变量
输出:
我们添加了一个名叫message的变量,每个变量都指向一个值——与该变量相关的信息,在这里指向的值为文本“Hello Python world!”
添加变量导致 Python解释器需要做更多工作。处理第一行代码时,它将变量 message 与文本"He11o Python world!"关联起来;处理第二行代码时,它将与变量message 关联的值打印到屏幕。
输出:
在程序中可随时修改变量的值,而Python将始终记录变量的最新值。
1.1变量的命名和使用
在Python 中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解。请务必牢记下达有关变量的规则:
- 变量名只能包含字母、数字和下划线。变量名能以字母或下划线打头,不能以数字打头
- 变量名不能包含空格,但能使用下划线来分隔其中的单词
- 不要将python 关键字和两数名用作变量名,不要使用Python保留用于特殊用途的单词
- 变量名应既简短又具有描述性
- 慎用小写字母 1和大写字母0,因为它们可能被人错看成数字 1和0。
要创建良好的变量名,需要经过一定的实践,在程序复杂而有趣时尤其如此。随着编写的程序越来越多,并开始阅读别人编写的代码,你将越来越善于创建有意义的变量名。
2.字符串
宇符串就是一系列字符。在Python 中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。
2.1使用方法修改字符串的大小写
输出:
在这个示例中,变量 name 指向小写的字符串"ada lovelace’。在函数调用 print()中,方法title()出现在这个变量的后面。方法是Python 可对数据执行的操作。在name.title()中,name后面的句点(.)让Python对变量 name 执行方法 title()指定的操作。每个方法后面都跟着一对圆括号,这是因为方法通常需要额外的信息来完成其工作。这种信息是在圆括号内提供的。函数title()不需要额外的信息,因此它后面的圆括号是空的。
方法 title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。这很有用,因为你经常需要将名字视为信息。例如,你可能希望程序将值 Ada、ADA 和 ada 视为同一个名字,并将它们都显示为 Ada。
还有其他很有用的处理方法:
- 全部转为大写:upper()
- 全部转为小写:lower()
- 除首字母外,均为小写:capitalize()
- 所有字母均为小写:casefold()
- 大小写转换:swapcase()
- 找到元素位置:index()
2.2在字符串中使用变量
要在字符串中插人变量的值,可在前引号前加上字母f,再将要插入的变量放在花括号内。这样,当 Python 显示宇符串时,将把每个变量都替换为其值。
这种字符串名为f字符串,f是format (设置格式)的简写,因为 Python 通过把花括号内的变量替换为其值来设置字符串的格式。
2.3空白
增加空白:
- 制表符:\t
- 换行符:\n
删除空白:
- 删除末尾空白:rstrip()
- 删除开头空白:lstrip()
- 删除两边空白:strip()
3.数据类型
3.1函数input()
函数 input()接受一个参数—— 要向用户显示的提示(prompt)或说明,让用户知道该如何做。程序等待用户输人,并在用户按回车键后继续运行。输人被赋给变量 message,接下来的 print (message)将输人呈现给用户。
3.2数据类型
- 整数【int()】
表示正数、负数、零;
在较大的数中可以用下划线将其中的数字分组,Python不会打印其中的的下划线;
两个整数相除,结果为浮点数。 - 浮点数【float()】
浮点数包括整数部分和小数部分,使用浮点数进行计算时,结果包含的小数位数可能是不准确的。 - 布尔类型【bool()】
1 == True;0 == False
布尔值为False:0,None,False,空字符串,空列表,空元组,空集合,空字典。
逻辑运算符:
and:左右条件同时为True,结果为True
or:左右条件之一为True,结果为True
not:操作数为True,结果为False;操作数为False,结果为True - 字符串类型【str()】
4.列表
列表由一系列按特定顺序排列的元素组成。在Python中,用方括号([ ])表示,并用逗号分隔其中元素。
4.1访问列表元素
列表是有序集合,因此要访问列表的任意元素,只需将该元素的位置(索引)告诉Python即可。如下图所示:
输出:
注意:列表中的元素索引是从0开始的。当索引为-1时,则返回列表中的最后一个元素。
4.2使用列表中的各个值
输出:
4.3修改、添加和删除元素
修改元素:
输出:
添加元素:
-
在列表末尾添加元素:
方法append()
输出:
-
在列表中插入元素
方法insert()
输出:
删除元素 -
del语句
如果知道要删除元素在列表中的位置,可使用del语句:
输出:
- 方法pop()
用于删除列表中的元素,并继续使用它。
输出: - 删除列表中任何位置的元素
pop()也可以用于删除列表中任意位置的元素,只需在圆括号中指定要删除的元素的索引即可。
输出:
- remove()
不知道要删除元素的位置,只知道要删除元素的值,可以使用方法remove()
输出:
注意:使用remove()从列表中删除元素时,也可以接着使用它的值。
4.4组织列表
- 方法sort()对列表永久排序
输出:
注意:sort()是按字母顺序排序,且再也无法恢复到原来的排列顺序 - 方法sorted()对列表临时排序
输出: - 使用reverse()反转列表元素的排列顺序
输出: - 向sort()或sorted()传递参数reverse=True,可按与字母顺序相反的顺序排序
输出: - 确定列表长度
使用len()函数可快速获悉列表长度:
输出:
4.5对数字列表执行简单的统计计算
输出:
5.for 循环
5.1用for循环遍历列表
输出:
刚开始使用循环时请牢记,对列表中的每个元素,都将执行循环指定的步骤,而不管列表包含多少个元素。如果列表包含一百万个元素,Python 就重复执行指定的步骤一百万次,且通常速度非常快。
- 在for循环中执行更多的操作
输出: - 在for循环结束后执行一些操作
输出:
注意:位于for循环语句后面且属于循环部分的代码行,一定要缩进!同时也要避免不必要的缩进。不要遗漏for语句末尾的冒号。
5.2range()函数
-
使用函数range()
输出:
在这个示例中,range()只打印数 1~4。这是编程语言中常见的差一行为的结果。函数 range()让Python 从指定的第一个值开始数,并在到达你指定的第二个值时停止。因为它在第二个值处停止,所以输出不包含该值(这里为 5)。 -
利用range()创建数字列表
可以使用list()将range()的结果直接转换为列表
输出:
使用range()函数时,可以指定步长:
输出:
5.3列表解析
输出:
要使用这种语法,首先指定一个描述性的列表名,如 squares。 然后,指定一个左方括号,并定义一个表达式,用于生成要存储到列表中的值。在这个示例中,表达式为value ** 2(表示乘方运算),它计算平方值。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。在这个示例中,for循环为 for value in range(1,11),它将值 1 ~10提供给表达式 value ** 2。请注意,这里的for 语句末尾没有冒号。
5.4切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数 range()一样,Python 在到达第二个索引之前的元素后停止。要输出列表中的前三个元素,需要指定素引0和3,这将返回素引为0、1和2的元素。
输出:
如果要输出最后三个元素,可以使用切片squares[-3:]
注意:如果没有指定起始索引值,Python将自动从列表开头开始;如果没有指定终止索引值,Python将自动终止与列表末尾。也可在表示切片的方括号中指定第三个值,表示在指定范围内每隔多少个元素提取一个。
- 遍历切片
使用for循环遍历列表中的部分元素:输出:
- 复制列表
输出:
为了核实确实有两个列表,下面在每个列表中都添加一个元素:
输出:
如果不使用切片复制列表,则会出现如下情况:
输出:
这里将squares赋值给squares_1,而不是将squares的副本赋值给squares_1,因此两个变量指向同一个列表。
6.元组
列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
6.1定义元组
元组使用圆括号来标识,定义元组后,访问元组元素,就像访问列表元素一样。
输出:
6.2遍历元组中的所有值
与列表一样,使用for循环。
6.3修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改元组中的值,可重新定义整个元组:
输出:
7.if语句
简单的if语句只有一个测试和一个操作:
输出:
7.1if-else语句
输出:
7.2if-elif-else语句
输出:
注意:
可以使用多个elif代码块;
也可以省略else;
如果只想执行一个代码块,就使用 if-elif-else 结构;如果要执行多个代码块,就使用一系列独立的 if 语句。
7.3使用if语句处理列表
- 检查特殊元素
输出:
- 确定列表不为空
输出:
8.字典
8.1一个简单的字典
输出:
在 Python 中,字典是一系列键值对。每个键都与一个值相关联,你可使用键来访问相关联的值。与键相关联的值可以是数、字符串、列表乃至字典。事实上,可将任何 Python 对象用作字典中的值。在Python 中,字典用放在花括号({})中的一系列键值对表示,如前面的示例所示,键值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键值对之间用逗号分隔。在字典中,想存储多少个键值对都可以。
8.2添加键值对
输出:
有时我们可以先创建一个空字典,然后向其中添加键值对。
8.3修改字典中的值
依次指定字典名、用方括号括起的键,以及与该键相关联的新值:
输出:
8.4删除键值对
使用del语句,必须指定字典名和要删除的键:
输出:
8.5使用get()来访问值
方法get()的第一个参数用于指定键,是必不可少的;第二个参数为指定的键不存在时要返回的值,是可选的:
输出:
8.6遍历字典
- 遍历所有键值对
输出:
- 遍历字典中的所有键
输出:
按特定顺序遍历字典中的所有键:
输出:
- 遍历字典中所有的值
输出:
可以通过set()找出字典中独一无二的元素:
输出:
8.7嵌套
可创建三个字典,将三个字典存储到一个列表中;
也可以在字典中存放列表,在字典中存放字典。
9.while循环
for 循环用于针对集合中的每个元素都执行一个代码块,而while循环则不断运行,直到指定的条件不满足为止。
输出:
9.1使用break退出循环
要立即退出 while循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。break语句用于控制程序流程,可用来控制哪些代码行將执行、哪些代码行不执行,从而让程序按你的要求执行你要执行的代码。
以while True打头的循环将不断运行,直到遇到 break 语句。
9.2使用contine语句
要返回循环开头,并根据条件测试结果决定是否继续执行循环,可使用 continue 语句,它不像 break 语句那样不再执行余下的代码并退出整个循环。
10.函数
10.1定义函数
使用关键字 def 来告诉 Python,你要定义一个函数。这是函数定义,向Python 指出了函数名,还可能在圆括号内指出两数为完成任务需要什么样的信息。最后,定义以冒号结尾。
调用函数时,要依次指定函数名以及用圆括号括起必要的信息。
向函数中传递信息:
输出:
10.2形参和实参
在函数greet_ user()的定义中,变量 usetname 是一个形参( pararmeter),即函数完成工作所需的信息。在代码greet user('jesse‘)中,值”jesse’是一个实参( argument ),即调用函数时传
递给函数的信息。调用函数时,将要让函数使用的信息效在圆括号内。在 greet_user( ‘jesse’)中,将实参’jesse’传递给了的函数 greet_user(),这个值被赋给了形参 username。
- 传递实参
函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向两数传递实参的方式很多:可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。
位置实参:
输出:
关键字实参:
输出:
10.3返回值
函数并非总是直接显示输出,它还可以处理一些数据,并返回一个或一组值。函数返回的值称为返回值。在函数中,可使用 return 语句将值返回到调用函数的代码行。返回值让你能够将程序的大部分繁重工作移到西数中去完成,从而简化主程序。
10.4传递列表
输出:
10.5将函数存储在模块中
使用函数的优点之一是可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在称为模块的独立文件中,再将模块导入到主程序中。import 语句允许在当前运行的程序文件中使用模块中的代码。
通过将函数存储在独立的文件中,可隐藏程序代码的细节,将重点放在程序的高层逻辑上。
这还能让你在众多不同的程序中重用函数。将函数存储在独立文件中后,可与其他程序员共享这此文件而不是整个程序。知道如何导入的数还能让你使用其他程序员编写的函数库。
-
导入整个模块
要让函数是可导入的、得先创建模块。模块是扩展名为py的文件,包含要导人到程序中的代码。
接下来,在该文件所在的目录中创建另一个文件,用import在新建文件中调用该文件中的函数即可。 -
导入特定的函数
form 模块名 import 函数名
函数名可用逗号隔开。 -
使用as给函数指定别名
form 模块名 import 函数名 as 别名
指定别名后,在该程序中,使用该函数时可以用别名代替。 -
导入模块中的所有函数
使用星号(*)运算符可让Python导入模块中所有的函数。
11.类
11.1创建Dog类
根据规定,首字母大写的名称指的是类,这个类定义中没有圆括号,因为要从空白创建这个类
-
方法__init__()
类中的函数称为方法,我们将方法__init__ ()定义成包含三个形参:self、name 和 age。在这个方法的定义中,形参self 必不可少,而且必须位于其他形参的前面。为何必须在方法定义中包含形参 self呢?因为Python 调用这个方法来创建 Dog 实例时,将自动传入实参 self。每个与实例相关联的方法洞用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
以self为前缀的变量可供类中所有的方法使用。像这样可以通过实例访问的变量称为属性 -
根据类创建实例
访问属性:my_dog.name(句点表示法)
调用方法:my_dog.sit()
也可创建多个实例
11.2使用类和实例
-
给属性指定默认值
创建实例时,有些属性无需通过形参来定义,可在方法__init__()中为其指定默认值。
-
修改属性的值
1.直接修改:
输出:
2.通过方法修改属性的值
输出:
11.3继承
输出:
创建子类时,父类必须包含在当前文件中,且位于子类前面。定义子类时,必须在圆括号内指定父类的名称。
super()是一个特殊函数,让你能够调用父类的方法。父类也称为超类
(superclass ),名称 super 由此而来。
-
给子类定义属性和方法
在子类中添加的新属性,根据子类创建的所有实例都包含该属性,但所有的父类实例都不包含它。 -
重写父类的方法
在子类中重新定义该方法,根据子类调用该方法时,将忽略父类中的方法。 -
将实例用作属性
self.i = Dog(‘willie’)建一个新的 Dog 实例,并将该实例赋给属性self.i。
11.4导入类
import语句让Python打开类所在的模块,并导入其中的类
且一个模块中可以存储多个类。
- 从一个模块中导入多个类
form 模块 import 类,类
多个类之间用逗号隔开 - 导入整个模块
import 模块 - 导入模块中的所有类
使用星号(*)运算符可让Python导入模块中所有的类。 - 使用as给类指定别名
form 模块名 import 类 as 别名
指定别名后,在该程序中,使用该类时可以用别名代替。