二级Python考点总结
二级Python考点总结
1. 掌握 PYTHON 语言的基本语法规则。
程序的基本语法元素:程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、引用;
基本输入输出函数:input()、eval()、print();
源程序的书写风格等
2. 掌握不少于 2 个基本的 PYTHON 标准库。
random库
turtle库
time库
3. 掌握不少于 2 个 PYTHON 第三方库,掌握获取并安装第三方库的方法。
jieba库
PyInstaller库
Wordcloud库
4. 能够阅读和分析 PYTHON 程序。
5. 熟练使用 IDLE开发环境,能够将脚本程序转变为可执行程序。
6. 了解PYTHON 计算生态在以下方面( 不限于) 的主要第三方库名称:网络爬虫、数
据分析、数据可视化、机器学习、Web开发等。
变量命名
变量命名(主要考核保留字,在学习过程中一般的保留字都是遇到过的,如果没遇到,就记
住以下表格)
数据类型
可变:列表,字典(字典的键不可变,且不可重复),集合(集合的元素不可变,且不可重复)
不可变:数字,字符串,元组
有序:字符串,列表,元组
无序:字典,集合
类型装换函数:
int()转化为整数类型
floot()转化为浮点数类型
complex()转化为复数类型
str()转换为字符串类型
list()转化为列表类型
tuple()转化为元组类型
dict()转化为字典类型
set()转化为集合类型
字符串,列表,元组的索引及切片
以字符串为例:
s='abcdefghijk'
#首先索引分为正向和反向
s[0] # 'a'
s[-1] # 'k'
#切片有三个参数,依次为起始位置(包含),结束位置(不包含),步长(默认为1)
s[::] # 'abcdefghijk'
s[:-1] # 'abcdefghij'
s[::-1] # 'kjihgfedcba'
s[-1:-7:-1] # 'kjihgf'
s[::2] # 'acegik'
s[-1:0:-2] # 'kigec'
#列表,元组的操作类似。
字符串,列表,元组的方法
字符串的方法
字符串的方法:format(),strip(),split(),center(),replace()
strip(),split(),center(),ace()这四repl种方法均为返回一个新的被改过后的值,原字符串不会改变。
format()
s = "PYTHON"
"{0:30}".format(s) # 'PYTHON '
"{0:>30}".format(s) # ' PYTHON'
"{0:*^30}".format(s) # '************PYTHON************'
"{0:3}".format(s) # 'PYTHON'
"{0:-^20,}".format(1234567890) # '---1,234,567,890----'
"{0:.2f}".format(12345.67890) # '12345.68'
"{0:.4}".format("PYTHON") # 'PYTH'
"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425) # '110101001,Ʃ,425,651,1a9,1A9'
"{0:e},{0:E},{0:f},{0:%}".format(3.14) # '3.140000e+00,3.140000E+00,3.140000,314.000000%'
"{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14) # '3.14e+00,3.14E+00,3.14,314.00%'
冒号前面的0代表着format后面括号内的第几个参数(与索引类似从0开始),当一个字符串内有
多个槽,不写冒号前的数字,那么就会默认为0,1,2,3,4......如:
“{},{},{}”.format('a','b','c') # 'a,b,c'
strip()
该方法用来去除字符串首尾两端的字符,当不填写参数的时候,就是默认去除空白符(包含空格,换行符,制表符等),当填写长度大于等于2的字符串的时候,则首尾的所有字符串内有的字符都要一一删除,例如:
>>>s=' adca '
>>> s.strip()
'adca'
>>> s.strip(' a')
'dc'
>>>s=' sdfg\n'
>>>s.strip()
'sdfg'
>>>s='aabbbbaa'
>>>s.strip('ab')
''
split()
根据括号内的字符切割字符串,当不填写参数的时候,以空白符切割,例如:
>>> s=' abc\n '
>>> s.split()
['abc']
>>> s=' abc\n '
>>> s.split(' ')
['', 'abc\n', '']
>>> s='abc cd'
>>> s.split()
['abc', 'cd']
>>> s.split(' ')
['abc', 'cd']
>>> s='abcdrf'
>>> s.split('bc')
['a', 'drf']
center()
该方法是将字符串居中,第一个参数代表返回的字符串的长度,第二个参数代表当原字符串长度不够时候,使用的填充字符,默认不写的时候就是空格,例如:
>>> s='abcd'
>>> s.center(10)
' abcd '
>>> s.center(3)
'abcd'
>>> s.center(10,'*')
'***abcd***'
replace()
该方法是用一个字符串替换原字符串的子串,第一个参数为原字符串的子串,第二个参数为替换的的字符串,例如:
>>> s='abcdefgabcd'
>>> s.replace('ab','12')
'12cdefg12cd'
>>> s.replace('abcd','')
'efg'
>>> s=' abc def ghi'
>>> s.replace(' ','')
'abcdefghi
列表的方法
列表的方法:append(),sort(),reverse(),index(),insert(),remove(),pop()
这几种方法都是修改原列表
append()
往列表中添加元素
>>> l1=[1,2,3,4,5]
>>> l2=[2,3,4,5,6,7]
>>> l1.append(10)
>>> l1
[1, 2, 3, 4, 5, 10]
>>> l1.append(l2)
>>> l1
[1, 2, 3, 4, 5, 10, [2, 3, 4, 5, 6, 7]]
sort()
将列表排序,有两个参数,key参数填写函数名,代表根据函数的返回值进行排序,该函数的参数是列表的元素,默认不填为元素本身比较大小,reverse参数等于True或False,默认为False,从小到大。例如:
>>> l2
[2, 3, 4, 5, 6, 7]
>>> l2.sort()
>>> l2
[2, 3, 4, 5, 6, 7]
>>> l2.sort(reverse=False)
>>> l2
[2, 3, 4, 5, 6, 7]
>>> l2.sort(reverse=True)
>>> l2
[7, 6, 5, 4, 3, 2]
>>> def f(x):
return -x
>>> l2
[7, 6, 5, 4, 3, 2]
>>> l2.sort(key=f,reverse=True)
>>> l2
[2, 3, 4, 5, 6, 7]
reverse()
将列表逆序,例如:
>>> l2
[2, 3, 4, 5, 6, 7]
>>> l2.reverse()
>>> l2
[7, 6, 5, 4, 3, 2]
index()
在列表中查找元素,该方法有三个参数,第一个想要查找的元素,第二三是查找的起始索引位置。默认是从首到尾。
>>> l2
[7, 6, 5, 4, 3, 2]
>>> l2.index(3)
4
>>> l2.index(6,1)
1
>>> l=[1,2,1,3,4,5]
>>> l.index(1)
0
>>> l.index(1,1)
2
insert()
该方法是往列表中插入元素,第一个参数是插入的索引位置,第二个参数是插入的元素。例如:
>>> l=[1,2,3,4,5,6]
>>> l.insert(3,'a')
>>> l
[1, 2, 3, 'a', 4, 5, 6]
>>> l.insert(10,'b')
>>> l
[1, 2, 3, 'a', 4, 5, 6, 'b']
>>> l.insert(-6,'c')
>>> l
[1, 2, 'c', 3, 'a', 4, 5, 6, 'b']
>>> l.insert(-9,'d')
>>> l
['d', 1, 2, 'c', 3, 'a', 4, 5, 6, 'b']
remove()
移除列表中的元素,元素为此方法的参数。只删除第一个与参数相同的元素。例如:
>>> l=[1,2,3,1,4,5]
>>> l.remove(1)
>>> l
[2, 3, 1, 4, 5]
pop()
删除列表中好的元素,参数为删除元素的索引,返回值为删除的元素,例如:
>>> l=[1,2,3,4,5]
>>> x=l.pop(3)
>>> x
4
>>> l
[1, 2, 3, 5]
字典的方法
字典的方法:get(),items(),keys(),values(), get(),items(),keys(),values()字典本身不改变
get()
此方法是查询字典中的键,含有两个参数。第一个参数是要查询的键,当查询到的时候就返回在字典中此键对应的值,当没有查询到就返回第二个参数,例如:
>>> d={1:2,3:4,5:6}
>>> d.get(1,'a')
2
>>> d.get(10,'b')
'b'
此方法一般用来计算个数或者是次数,假设有字符s=‘abcabcdabcdcacb’,请计算各字符出现次数
s='abcabcdabcdcacb'
d={}
for i in s:
d[i]=d.get(i,0)+1
print(d)
#输出结果为:{'a': 4, 'b': 4, 'c': 5, 'd': 2}
items()
将字典转化成items对象,字典的每一组键值对合并为一个元组,然后所有的元组组合成为items()对象,例如:
>>> d={1:2,3:4,5:6,7:8,'a':'b'}
>>> d.items()
dict_items([(1, 2), (3, 4), (5, 6), (7, 8), ('a', 'b')])
#可以通过list方法将items对象转化成为列表类型
>>> d
{1: 2, 3: 4, 5: 6, 7: 8, 'a': 'b'}
>>> list(d.items())
[(1, 2), (3, 4), (5, 6), (7, 8), ('a', 'b')]
values()和keys()
一个是将所有的值组合成values对象,一个是将所有的键组合成keys对象,同样支持list转化类型,例如:
>>> d.values()
dict_values([2, 4, 6, 8, 'b'])
>>> d.keys()
dict_keys([1, 3, 5, 7, 'a'])
>>> list(d.keys())
[1, 3, 5, 7, 'a']
集合的方法
集合的方法:add(),clear(),remove(),update()
add()
向集合中添加元素,参数为添加的元素。例如:
>>> s={1,2,3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(1)
>>> s
{1, 2, 3, 4}
clear()
清空集合,例如:
>>> s={1,2,3}
>>> s.clear()
>>> s
set() #这代表的是空集合
remove()
删除集合内的元素,参数是需要删除的元素,例如:
>>> s={1,2,3}
>>> s.remove(2)
>>> s
{1, 3}
update()
合并两个集合,参数是被合并的集合,例如:
>>> s={1,2,3}
>>> s1={2,4,5}
>>> s.update(s1)
>>> s
{1, 2, 3, 4, 5}
分支语句
主要利用if,elif,else三个保留字来控制程序的走向。
其中if和elif都需要自身条件成立才可以执行,else在不执行其他分支就执行。
此处引入布尔值及空值,布尔值是在计算机表示真假的两个值,True或False,空值是None,可利用bool函数求得bool值,在if及后面的while中bool值为真才代表条件成立执行下去,例如:
>>> bool(1)
True
>>> bool(0)
False
>>> bool('')
False
>>> bool(' ')
True
>>> bool(None)
False
>>> bool([])
False
>>> bool([0])
True
>>> bool(0.0)
False
>>> bool('0')
True
在数字类型中,非0或0的任意形式,即为True
在字符串中,非空即为True(空字符串和空格字符串是有区别的)
在其他数据类型中,非空即为True
条件表达式主要利用保留字if和else实现:
表达式1 if 真值表达式 else 表达式2
如果真值表达式成立那么执行表达式1,如果不成立执行表达式2
例如:
>>> 1+2 if 2<3 else 3+4
3
>>> print('nihao') if 1>0 else print('hello')
nihao
for循环及while循环
对于循环来说,主要要了解循环的扩展模式,循环嵌套,以及循环控制的两个保留字的使用循环的扩展模式指的是使用了else保留字。此else保留字缩进位置与循环的for或者while对齐,对于for循环来说正常遍历结束便执行else下的语句,如果被break结束,那便不会执行到else,对于while循环来说,当条件不再是真值,便执行else语句,同样如果循环被break结束,那便不会执行到else。
循环嵌套中每执行一次外层循环,内层循环都会执行一次整体循环。例如:
for i in range(3):
for x in range(2):
print(i)
输出结果为:
0
0
1
1
2
2
循环控制
控制循环一般使用continue和break两个保留字,其中continue是结束本次循环,但是循环本身会继续遍历或者是判断条件的真值来决定是否运行下一次循环,而break是直接退出循环。需要注意的是两者控制的都是包含自己的那一层循环,不能跨层使用。例如:
continue
for i in range(3):
if i==1:
continue
print(i)
输出结果为:
0
2
break
for i in range(3):
if i==1:
break
print(i)
输出结果为:
0
函数
需要注意函数的定义时候的形参以及调用时候的传参,请参阅其他相关资料。
另外需要注意的是,全局变量和局部变量。
在没有调用函数的时候,无论函数是否使用了global,外界的全局变量都不会被其改变,因为函数没被调用意思就是函数未执行。并且一系列可变的数据类型的操作也是有所不同的。例如:
>>> l=[1,2,3]
>>> def f():
l.append(1)
>>> f()
>>> l
[1, 2, 3, 1]
>>> l=[1,2,3]
>>> def f():
l=[1,2]
>>> f()
>>> l
[1, 2, 3]
#也就是说当使用赋值操作的时候,可变的数据类型也不会被改变,很绕口,但须记住,具体理论请使用id()函数查看对象地址。
lambda匿名函数
此函数一般作为sort排序的参数使用。这是一个表达式只是我们称为函数,例如:
>>> x=lambda a:a**3
>>> x(10)
1000
下面将列表l=[[1,2],[2,1],[3,7],[4,4]]按照每个元素的索引为1的值进行排序,也就是将2,1,7,4排序。
>>> l=[[1,2],[2,1],[3,7],[4,4]]
>>> l.sort(key=lambda x:x[1])
>>> l
[[2, 1], [1, 2], [4, 4], [3, 7]]
文件
文件的打开关闭读取等,主要包含以下几个。
方法 | 描述 |
---|---|
open() | 打开文件分为多种打开模式,r读取(默认),w覆盖写入,a增加写入,b二进制方式,t文本方式(默认),+在原本的方式增加读或者写的功能 |
read() | 读取全部文件内容,当有参数的时候代表读取的字符数。 |
readline() | 读取文件的一行内容,末尾有换行符 |
readlines() | 读取文件的所有内容形成一个列表,列表的每一个元素就是文件内的一行内容。(当部分题目直接遍历打开文件的对象f时,等同于遍历f.readlines()) |
write() | 写入文件内容,参数为字符串 |
writelines | 写入文件内容,参数为一个组合数据类型,组合数据的元素需要是字符串 |
close() | 关闭文件,操作文件必须关闭文件 |
open()打开文件分为多种打开模式:
模式 | 描述 |
---|---|
‘r’ | 以「只读」模式打开文件,如果指定文件不存在,则会报错,默认情况下文件指针指向文件开头 |
‘w’ | 以「只写」模式打开文件,如果文件不存在,则根据 filename 创建相应的文件,如果文件已存在,则会覆盖原文件 |
‘a’ | 以「追加」模式打开文件,如果文件已存在,文件指针会指向文件尾部,将内容追加在原文件后面,如果文件不存在,则会新建文件且写入内容 |
‘t’ | 以「文本文件」模式打开文件 |
‘b’ | 以「二进制」模式打开文件,主要用于打开图片、音频等非文本文件 |
‘+’ | 打开文件并允许更新(可读可写),也就是说,使用参数 w+、a+ 也是可以读入文件的,在使用的时候,需要注意区别 |
另外考试的时候可能涉及到文件编码问题
一般在open括号内加入encoding,例如:
open('1.txt','r',encoding='utf-8')
标准库:turtle,random,time
导入库的方式(以turtle为例):
from turtle import * #调用时无需turtle.作前缀(导入turtle库的所有内容)
import turtle #调用时需要turtle.作前缀(导入turtle库的所有内容)
import turtle as t #调用时需要t.作前缀(导入turtle库的所有内容)
from turtle import circle #调用时无需turtle.作前缀(导入turtle库的circle函数,其他不可使用)
turtle库
turtle库是Python重要的标准库之一,它能够进行基本的图形绘制,其概念诞生于1969年。turtle是最有价值的程序设计入门实践库,它是程序设计入门层面最常用的基本绘图库。
方法 | 描述 |
---|---|
setup() | 创建窗体,该函数有四个参数,width:窗口宽度,height:窗口高度,startx:窗口左侧与屏幕左侧的距离,starty:窗口顶部与屏幕顶部的距离 |
penup() | 拿起画笔,拿起之后画笔的移动轨迹将不会绘制出来 |
pendown() | 放下画笔,与上述相反,画笔放下的状态也是正常打开turtle窗体所处于的状态 |
pensize() | 设置画笔线条的粗细,参数为数字,单位是像素 |
pencolor() | 设置画笔的颜色,参数为颜色的英文名称(还可以是RGB整数模式) |
color() | 写入文件内容,参数为一个组合数据类型,组合数据的元素需要是字符串 |
begin_fill() | 开始填充,在准备画某一个需要填充的图形之前,需要事先调用此函数 |
end_fill() | 结束填充,在画完需要填充的图形后,调用此函数,填充颜色。 |
forward() | 向当前指定方向移动绘制相应的距离,参数为数字,当数字为负值时,也可代表向相反方向绘制(可以简写为fd()) |
backward() | 向当前指定的相反方向绘制相应的距离,参数为数字 |
setheading() | 以正右方为绝对零度,逆时针旋转相应的度数,参数为数字(可以简写为seth) |
right() | 以当前指针指向的角度顺时针旋转相应的角度,参数是数字 |
left() | 以当前指针指向的角度逆时针旋转相应的角度,参数是数字 |
circle() | 绘制圆或者弧形,有两个参数,第一个参数为半径,第二个参数为角度,第二个参数默认不写就是360度绘制整个圆,写了就是绘制对应角度的圆弧 |
undo() | 撤销上一步,就是撤销画笔最后一步的动作(意思就是本身撤销并不算是画笔的最后一步动作) |
goto() | 移动到绝对坐标,两个参数一次为在x轴和y轴的坐标,刚打开窗体的画笔所处位置为零点 |
speed() | 设置画笔的绘制速度,参数为1-10,依次加快,不在这范围内的数字没有意义,代表是即时完成。 |
home() | 将当前画笔调整到零点的位置,画笔指向正右方 |
random库
随机数在计算机应用中十分常见,Python 内置的 random 库主要用于产生各种分布的伪随机数序列。random 库采用梅森旋转算法生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用。
方法 | 描述 |
---|---|
seed() | 随机数种子,参数一般默认以当前时间作为种子,每一个不同的种子都有一种随机数序列,因为时间在不停的变化,所以可以导致随机数选取的序列也在变化,从而伪造成随机数的假象,设置随机数种子主要是为了重复程序运行的轨迹 |
random() | 生成在[0,1.0)之间的随机小数 |
randint() | 生成随机整数,有两个参数,生成在两个参数之间的整数,随机数范围包含两个整数 |
choice() | 从序列类型中随机返回一个元素,参数是序列类型 |
shuffle() | 将序列类型中的元素随机打乱,返回打乱后的序列类型,参数为序列类型 |
sample() | 从序个列类型中随机选取几个元素,有两个参数,依次为序列类型和选取元素的数 |
randrange() | 类似于从range()函数中随机取一个数,有三个参数依次为,起始位置,结束位置,和步长 |
uniform() | 生成一个随机小数,参数为两个数字,生成的随机小数在两个数字之间,随机数范围包含两个数字。 |
time库
Python time库是Python标准库中的一个模块,它提供了各种处理时间和日期的函数。它可以用于获取当前时间、计算时间差、格式化时间等操作。时间在计算机中通常以时间戳的形式表示,而time库提供了将时间戳转换为可读性更好的日期和时间格式的函数
计算机元年是从1970年1月1日0时开始的,此时时间为0,之后每过一秒时间+1(之前random库中的seed就是以此计时的参数)
方法 | 描述 |
---|---|
time() | 返回从计算机元年至当前时间的秒数的浮点数 |
sleep() | 让程序睡眠一段时间,参数是给定的相应的秒数 |
gmtime() | 用给定秒数转换为用UTC表达的时间元组,参数可以是time()返回的秒数,默认是当前的系统时间 |
asctime() | 将时间元组转换为日期时间字符串,参数可以是gmtime(),默认是当前系统时间 |
mktime() | 将本地日期时间元组转换为新纪元秒数时间,参数可以是gmtime(),默认是当前系统时间,不可省略 |
localtime() | 将秒数时间转换为日期元组(以本地时间为准),参数可以是time() |
strftime() | 将日期时间元组转换为format参数指定格式的字符串,第一个参数是format格式化字符串,第二个参数是日期时间元组,可以是gmtime(),默认是本地系统时间 |
第三方库:jieba,PyInstaller,wordcloud
第三方库的安装主要介绍两种命令(以jieba做示例):
①:pip install jieba
②:pip install -i https://pypi.douban.com/simple/ jieba
具体安装步骤:以管理员权限打开cmd(此处不知道请百度),敲击以上命令,回车执行。
jieba库
Python jieba库是一个中文分词工具,可以将中文文本分割成单独的词语。它支持三种分词模式:精确模式、全模式和搜索引擎模式。jieba库还支持自定义词典和关键词提取等功能,是中文文本处理的重要工具之一。
方法 | 描述 |
---|---|
lcut() | 精确模式,考试最常用的模式 |
jiaba.lcut(s,cut_all=True) | 全模式,即将字符串的所有分词可能列出来,返回结果是列表类型,冗余性最大 |
jieba.lcut_for_search(s) | 搜索引擎模式,该模式首先执行精确模式,然后再对其中长词进一步切分获得最终结果 |
jieba.add_word(w) | 向分词词典中增加新词w,增加新单词后,当遇到该词语时将不再被分词。 |
PyInstaller库
pyinstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。
PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的,而是说你要是希望打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作;打包成mac app,需要在Mac OS上使用。
wordcloud库
Python wordcloud库是一个用于生成词云的Python库,它可以根据给定的文本数据生成具有良好可视化效果的词云图。该库支持多种词云形状、颜色、字体等参数的自定义设置,并且可以通过对文本数据进行预处理和过滤来生成更加精美的词云图。此外,该库还支持对词云图进行保存和分享等功能。
参数 | 功能 |
---|---|
font_path | 指定字体文件的完整路径,默认为None |
width | 生成图片宽度,默认400像素 |
height | 生成图片高度,默认200像素 |
mask | 词云形状,默认None,即方形图 |
min_font_size | 词云中最小的字体字号,默认4号 |
font_step | 字号步进间隔。默认1 |
max_font_size | 词云中最大的字体字号,默认None,根据高度自动调节 |
max_words | 词云图中最大词数,默认200 |
stopwords | 被排除词列表,排除词不在词云中显示 |
background_color | 图片背景颜色,默认黑色 |
方法 | 功能 |
---|---|
Generate(txt) | 由txt文本生成词云 |
To_file(filename) | 将词云图保存为名为filename的文件 |
例如:
from wordcloud import WordCloud
from scipy.misc import imread
mask = imread("佩奇.jpg")
f = open("page.txt","r")
txt = f.read()
f.close()
wordcloud = WordCloud(background_color = "white",width=800,height=600,max_words=200,max_font_size=80,mask = mask,).generate(txt)
wordcloud.to_file("page.png")
需要注意的是,当使用imread失败需要安装
imageio库,然后将第二行换成:
from imageio import imread
另外在使用中文字符生成词云的时候,需要使
用字体,并且字体需要在当前程序所在的目录,
不然在程序中就需要将字体的地址指明。