到本节为止,Python编程的基础内容我们已经讲完了。如果你能很好地掌握前面这些课程的内容,再借鉴以前学习Scratch时掌握的编程思想、案例,就可以尝试创作一些简单的程序了。毕竟,编程最难学的还是第一门语言,一旦你掌握了用一种编程语言思考的技能,学习一门新的编程语言时,你完全可以将以前的积累“平移”过来。比如:
- 在新的编程语言中,怎么实现基本的输入输出,以支持“Hello,world!”程序?
- 在新的编程语言中,变量是怎么定义的?支持哪些数据类型?
- 在新的编程语言中,支持哪些基本的数据运算?
- 在新的编程语言中,怎样实现流程控制?比如基本的分支结构、循环结构等。
- 在新的编程语言中,怎么实现代码的组织?怎样实现函数、模块这些基本的代码单元?
- 新语言有什么特有的语法,在某些场合能够大大简化编程或提高效率?
- 新语言提供的函数或类库有哪些功能?
这个列表并不完整,但可以在你学习新语言时有一个良好的参考,快速掌握新语言的精髓。
现在我们就来梳理一下新学习的Python语言知识点,做到温故而知新。
一、基本的输入输出
用一个简单的程序做复习:
print('hello,',input('请输入你的名字:'))
二、变量与数据类型
关于变量:
- 通过对变量名直接赋值的方式完成变量定义
- 变量名称是一种标识符,标识符可以由字符、下划线和数字组成,中间不能有空格,不能以数字开头,也不能使用保留字;
- 变量命名时英文字母区分大小写, Dog和dog就是两个变量,通常建议用小写字母命名变量;
- 变量名称尽可能简单、有意义;
- 变量分为全局变量和局部变量,它们有自己的作用域。简单数据类型的局部变量只能在函数内部创建和使用,用global关键字声明后可以当作全局变量使用;组合数据类型的全局变量(如列表),在函数内部没有创建的情况下,可以修改全局变量,但在函数中创建同名变量的情况下,函数中代码只修改局部变量,不影响全局列表的值。
关于数据类型:
- Number 数字:最常用的数据类型,它进一步分为int(整数)、float(浮点数,就是小数)、bool(布尔型)、complex(复数),我们常用的是前三个。
- String 字符串:用单引号或双引号包括起来的字符
- List 列表:用 “[ ]” (英文状态下的中括号)包括起来的一组数据,数据之间用“,”(英文状态下的逗号)分隔。比如:[1,2,’数据1′,’数据2′]。
- Tuple 元组:用 “( )” (英文状态下的小括号)包括起来的一组数据,数据之间用“,”(英文状态下的逗号)分隔。比如:(1,2,’数据1′,’数据2′)。元组(tuple)与列表类似,不同之处在于元组的元素不能修改。
- Dictionary 字典:字典是用“{ }”(大括号)包括起来的一组数据,但是和列表、元组不同,字典中的数据元素包括“键”和“值”两部分,例如{ ‘语文’ : 99 ,’数学’ : 100, ‘英语’ : 98 }。
- Set 集合:集合是不重复的一组数据。
三、数据运算
Python数据之间的运算是通过不同的运算符实现的,包括算术运算符、赋值运算符、关系运算符、逻辑运算符。
- 算术运算符是指对数值进行加减乘除等算术运算的符号,常用的运算符包括+、-、*、/、%、**、//等;
- 赋值运算符用于完成“赋值运算”,即把“=”右侧的数值或计算结果赋值给左边的变量。上面的算术运算符都可以在后面加上“=”号变成赋值运算符,除了简单赋值,其实就是把算术运算的结果再赋值给变量。a *=3+2就等价于a=a * (3+2),即a = a * 5,先把赋值运算符右侧的表达式算出来,再去和 a 进行运算,把结果再赋值给a, 所以a最终等于15;
- 关系运算符也称为比较运算符,用于对变量或表达式进行比较,如果比较结果为真,则返回True,如果为假则返回False。关系运算符通常用于条件语句作为判断条件。包括==、!=、>、<、>=、<=;
- 逻辑运算符用于对真和假两种布尔值进行运算,结果仍为布尔值。Python中有三个逻辑运算符 and 、or 、not,代表与、或、非三种运算;
- 不同的运算符放在一起,必须优先级运算,优先级高的先执行,优先级低的后执行;同样优先级的运算符,先左后右;如果有括号,先对括号里面的内容进行运算;
- Python中不同运算符的优先级从高到低顺序为:1)幂运算;2)乘除取模、整除;3)加减;4)关系运算符;5)逻辑非;6)逻辑与;7)逻辑或;
- 不同数据类型之间不能直接运算,整数和小数运算的时候会被自动转换为小数(浮点数),但其它的情况下,需要用函数进行强制的类型转换,比如int()、float()、str()、list()。
四、字符串
大部分编程语言都要处理字符串这种基本的数据类型,Python中的字符串由数字、字母、下划线、汉字等组成:
- 字符串可以用单引号、双引号、三引号(多行字符串)来包括其内容;
- Python支持转义字符,它是把具有特殊含义的符号(如引号、反斜杠 \ )或其它不能通过键盘输入的字符以反斜杠“\”开头的字符序列表示,比如\’表示单引号、\”表示双引号、\n表示换行,\t表示制表符;
- 字符串支持以下运算:
- + 号: 字符串连接;
- *号:重复输出字符串若干次得到新字符串;
- []: 通过索引获取字符串中的字符,索引左侧开始第一位为0,向后依次加1;右侧开始第一位为-1,向前依次减1;
- [:]:截取字符串的一部分遵循左闭右开原则,即不包括右侧的索引;
- in :成员运算符,如果字符串包括给定字符返回True,否则返回False
- not in:成员运算符,如果字符串不包括给定字符返回True,否则返回False
字符串常用方法:
- count() :统计子字符串在字符串中出现的次数
- find() :检索子字符串在字符串中的索引位置
- join() :将序列中的元素以指定的字符连接成一个新的字符串
- split():指定分隔字符串对字符串进行拆分,将拆分的结果以列表形式返回
- len() :统计字符串中字符个数,即字符串长度
- lower(): 将字符串全部改为小写字母
- upper():将字符串全部改为大写字母
- title():将字符串中的每个单词的首字母改为大写
字符串可以通过“%s”、“%d”、“%f”等形式实现插值运算,即将一个值插入到另一个含有转换标记“%”的字符串中,“%”用于在字符串中标记转换符的位置,待插入的数据放在一个序列中。通过这种方式实现格式化输出数据。
五、列表
Python语言支持列表数据类型,可以创建列表,然后添加、删除、修改列表中的元素,查找和访问元素以及对列表进行统计等。列表和字符串、元组统称为“序列类型”,它们都是把多个数据组织起来的类型。
- 创建列表:将要加入列表的元素放置在“[ ]”中,元素之间用“,”隔开;
- 删除列表:直接写 del 列表名;
- 索引:通过[索引]的方式访问列表中的内容,与字符串类似,支持负索引;
- 添加元素:append()在列表的末尾追加一个元素,extend()在列表末尾追加一个新列表的内容,相当于把两个列表合起来,insert()在列表的指定位置插入一个新元素;
- 删除元素:del listName[ 索引 ]移除索引位置的元素,listName.remove(元素)移除列表中某个值的第一个匹配项,listName.pop(索引)移除指定索引位置的元素后返回该元素的值,listName.clear()清空列表中的所有元素;
- 修改元素:直接通过索引获取该元素并重新赋值即可;
- 列表统计:count()统计列表中指定元素出现的次数,index()返回列表中指定元素首次出现的索引,len()返回列表长度数值,sum()返回列表中所有元素的和,max()返回列表中最大的元素,min()返回列表中最小的元素;
- 列表排序:listName.sort(key = None, reverse = False),key表示从每个元素中提取一个用于比较的键,一般使用默认的None;reverse为可选参数,值为True表示降序(从大到小),值为False表示升序(从小到大),默认为False,就是从小到大排序;
顺带复习一下元组,元组的操作与列表类似,但元组采用圆括号定义,元组生成之后是固定不变的,不能删除或替换其中的数据项。
六、字典
字典是包括0或多个键值对的集合,键值对之间没有顺序。“键”就是用来查询信息的元素,而“值”是你要检索的数据。在Python中以大括号“{ }”来包括键值对,键和值之间通过冒号连接,键值对之间使用逗号隔开。
- 创建字典:可以用大括号创建一个字典,大括号内可以包括0或多个键值对,如果为0是空字典;也可以用dict()函数来创建字典,dict()函数的参数可以为空,也可以是表示两个元素对应关系的映射:
- 字典的“键”不能重复。如果一个键被赋值多次,会以最后一次赋值为准;比如你在创建时写了两个“乐乐”的身高,会以最后一个为准;
- 字典可以嵌套其它数据类型。比如一个键值对应的可以是数字,也可以是一个列表,甚至可以是另一个字典;
- 字典的“键”必须是不可变的,键可以是数字、字符串、元组等不可变的数据类型,但不能是列表等可变的数据类型;
- 字典的字符索引:通过字符索引查找与特定键对应的值,如字典名[关键字];
- 增加和修改:字典可以通过对键信息赋值的方式实现增加和修改,如果键已经存在于字典中就是修改对应的键值,如果不存在会增加键值对;
- 删除元素:用del 字典名称[k] 的方式,其中k是要删除的键;还可以用字典的pop()方法,pop()方法会返回键对应的值,然后删除这个键值对;还可以用字典的clear()方法删除字典中所有键值对;
- 判断键是否在字典中:使用 k in 字典名称 这样的格式查询键是否在字典中,如果存在返回True,否则返回False
- 字典遍历:支持基本的for循环遍历(for i in dict_name)、遍历键(for i in dict_name.keys())、遍历值(for i in dict_name.values())、同时遍历键和值(for i, j in dict_name.items());
- 求字典长度:直接用len函数
- 随机取元素:可以使用popitem()从字典中删除最后一个键值对,以元组的形式返回,然后将其从字典中删除。在Python3.7版本之前,popitem()会删除一个随机项而不是最后一项。
七、流程控制
7.1 分支结构
Python支持“单分支”、“二分支”结构,还可以实现“多分支结构”,分支之间也可以嵌套。
- 单分支结构:
if <判断条件>:
<语句块>
- 二分支结构
if <判断条件>:
<语句块a>
else:
<语句块b>
- 多分支结构
多分支结构用于判断条件有多个可能值的情况。
if <判断条件1>:
<语句块1>
elif <判断条件2>:
<语句块2>
elif <判断条件3>:
<语句块3>
elif <判断条件4>:
<语句块4>
……
else:
<语句块>
分支结构的注意事项:
- 判断条件的表达式,值不一定非要是True和False。0、0.0、空字符串、空列表、空元组、空集合、空字典这些都会被认为是False。反之,非零值、非空字符串、非空列表……这些则认为是True。
- in和not in这种成员运算符也可以用于判断条件;
- 二分支结构中肯定有一条分支会被执行;
- 多分支结构中最多只有一条被执行。
7.2 循环结构
循环结构对应着Scratch中的“重复执行”:
- for循环
通常用于遍历可迭代对象:
for <循环变量> in <可迭代对象>:
<循环体>
- 计数循环
计数循环要用到range()函数:
s = 0
for i in range(1,101):
s+=i
print('1+2+3+…+99+100=%d'%s)
注意,在range()函数后是一个英文冒号。循环体是通过缩进一层来表示它和for语句的包含关系的。你会发现这段代码和Scratch中的重复执行…次有相似之处,它可以精确地控制执行的次数。
- 列表遍历
heros = ['关羽','黄忠','赵云','张飞','魏延']
for i in heros:
print(i)
- while循环
适用于在某种条件下重复执行代码的场景:
while <判断条件>:
执行语句
由于while循环是否继续执行取决于条件,所以一般在循环体中,我们会修改条件,从而使条件失效时退出while循环。
- 循环中止与跳过
使用break是直接退出循环,使用continue来退出“当前这一次”循环。
八、代码组织
Python中代码组织可以理解为包——模块——函数三个级别,模块中也可以包括类,类中包括函数和数据(即方法和属性)。
- 复杂的Python程序可以分成文件夹,每个文件夹就是一个“包”,可以在包中添加init.py来初始化导入包中的模块;
- 文件夹中的每个Python文件称为模块,可以把自定义模块理解为“自定义函数”和“自定义数据”的集合,使用写好的模块时可以通过import + 文件名,导入模块所有内容,或通过from + 模块名 + import + 函数名,只导入这个模块的指定函数;
- 划分清晰的模块可以让程序结构清晰,提高代码复用率,便于程序维护和扩展;
- 函数是一段能够实现特定功能的、可重复使用的语句组合,函数使用def关键字定义,可以通过return关键字返回值,也可以不写,默认python会返回一个“None”对象;
- 可以采用面向对象的方式来组织代码,使用class关键字定义类来作为程序的基本单元,类实现了一组对象的”属性“和”方法“,”属性“就是对象内部的数据,而”方法“就是对象处理数据的函数,而程序执行的过程就是在对象之间传递数据、处理数据的过程。
九、程序扩展
Python通过库将具有相关功能的模块集合聚合在一起。库分为两种,一种是“标准库”,安装Python时已经安装在系统中的,可以直接用import导入使用;另一种是其它人开发的库,称为“第三方库”,它们需要安装到系统中才可以使用。
我们目前学习的标准库有: – random库:处理随机数 – math库:进行数学运算 – time库:处理时间数据
要安装第三方库,可以使用pip工具,也可以使用海龟编辑器自动安装和卸载。
完成复习
以上我们通过非常简单的描述快速复习了Python编程的基础知识,一些特别的知识点如异常处理和文件读写、命名空间,大家可以自行复习。如果你了解思维导图,建议你用思维导图整理一下学习过的知识点,便于形成清晰的知识结构,做到胸有成竹。
如果你对上面复习的内容已经很熟悉,那么恭喜你,你可以继续后面的学习,使用Python开发一些有趣的应用了。