Python语言基本语法元素

程序的基本语法元素

程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、引用

  • 缩进
    1.if、elif、else、for、while、def等保留字通过在行尾增加英文冒号(:)表达对后续连续缩进语句的所属关系
    2.缩进一般采用4个空格表示,但并不强制。要求在一个Python程序中采用相同的表示方式,可以为1个或任意多个空格或Tab键形式
a, b = 0, 1
while a < 1000:
    print(a, end=",")
    a, b = b, a + b
  • 注释
    采用#开头表示,多行注释需要在每行注释前都增加#字符
  • 变量
    使用变量无语预先声明,可以随时命名、随时赋值、随时使用
  • 命名
    采用大小写字母、数组、下划线和汉子等字符及其组合命名,但首位不能为数字,长度没有限制
  • 保留字
    3.5版本共有35个保留字,大小写敏感
    and as assert async await break class continue def del elif else except False finally for from global if import in is lambda None nonlocal not or pass raise return True try while with yield
  • 数据类型
    考核整数类型、浮点数类型、复数类型、字符串类型、列表类型、字典类型6种
  • 赋值语句
    右侧结构赋值给左侧变量,使用等号(=)表达
    <变量> = <表达式>
  • 引用
    使用import,程序调用当前程序意外功能库的过程。有4种表达方式
    1.全命名空间引用
    import <功能库名称>
    <功能库名称>.<函数名称>() 方式调用具体功能
    2.具体函数引用
    form <功能库名称> import <函数名称>
    <函数名称>() 方式调用具体功能
    3.全函数引用
    form <功能库名称> import *
    <函数名称>() 方式调用具体功能
    4.别名引用
    import <功能库名称> as <功能库别名>
    <功能库别名>.<函数名称>() 方式调用具体功能

基本输入输出函数

input()、eval()、print()

  • input()
    从控制台获得用户的一行输入,以字符串类型返回结果
    <变量>=input(<提示性文字>)
  • eval()
    去掉字符串最外侧的引用,按照Python语句方式去执行去掉引号后的字符内容,常和input一起使用
    <变量>=eval(<字符串>)
    <变量>=eval(input(<提示性文字>))
  • print()
    输出运算结果,有3种用法
    1.单变量输出
    print(<待输出字符串或其他变量>)
    2.多变量输出
    print(<变量1>,<变量2>,...,<变量n>)
    3.混合输出,用于混合输出字符串与变量值
    print(<输出字符串模版>.format(<变量1>,<变量2>,''',<变量n>))

源程序的书写风格

Python语言的特点

  • 主要特点
    1.胶水语言,具有通用性
    2.语法简洁
    3.生态高产
  • 次要特点
    1.平台无关
    2.强制可读(缩进表达)
    3.支持中文(Unicode编码)
    4.模式多样(语句、函数、面向对象)
    5.类库便捷(通过pip安装类库)

基本数据类型

数字类型

整数类型、浮点数类型和复数类型

  • 整数类型
    没有取值范围限制,4种进制表示:十进制、二进制、八进制和十六进制。默认采用十进制,其他禁止需要增加引号符号
进制种类引导符号描述
十进制1010,-1010
二进制0b或0B由字符0和1组成,例如:0b1010,0B1010
八进制0o或0O由字符0到7组成,例如:0o1010,0O1070
十六进制0x或0X由字符0和9、a到f或A到F组成,例如:0x1010,0X10F0
  • 浮点数类型
    数组范围和精度容计算机系统限制
    范围一般在-10308到10308之间
    精度一般在2.22✖️10-16左右
    可以使用一般表示和科学计数法
    <数值a>e<数值b>=a✖️10b
    存在不确定小尾数问题,可以通过round(x,d)函数约定保留的位数,控制运算精度
  • 复数类型
    复数类型表示为:a+bj或a+bJ,a为实数部分,b为虚数部分。
    可以通过real和imag获得实数和虚数部分的值
z=1+2j
print(z.real,z.imag)

数字类型的运算

  • 数值运算操作符
    1.操作运算符
    与Java运算符不同的地方,其运算之后的结果根据运算符不同保存为不同的类型
    x/y 商,结果为浮点数
    x//y 整数商,结果为整数
    x%y 余数,模运算
    x* * y x的y次幂,即xy
    2.增强赋值运算符
    所有二元操作运算符(+、-、、/、//、%、 )都可以与赋值(==)相连,形成增强赋值操作符(+=、-=、 =、/=、//=、%=、* * =)
    op表示这些二元运算操作符,增强赋值操作符的用法如下
    x op=y 等价于 x=x op y
  • 内置的数值运算函数
    abs(x) x的绝对值
    divmod(x,y) (x//y,x%y)输出为二元数组形式
    pow(x,y)或pow(x,y,z) x* y或(x *y)%z,幂运算
    round(x)或round(x,d) 对x四舍五入,保留d位小数,无参数d则返回四舍五入的整数值
    max(x1,x2,...,xn) x1,x2,...,xn的最大值
    min(x1,x2,...,xn) x1,x2,...,xn的最小值

字符串类型及格式化

索引、切片、基本的format()格式化方法

  • 索引
    对字符串中的某个字符的检索,字符串的长度为N那么索引下标为[0,N
    -1],与Java不同的是还可以为[-N,-1]。但是长度从左到右必须为由小到大
    <字符串>[序号]

  • 切片
    对某个字串区间的检索,
    <字符串或字符串变量>[N:M]
    1.获取字符串N到M的字串(不包括M)
    2.如果N缺失则默认为0
    3.如果M缺失则默认到字符串结尾
    4.如果M大于字符串长度则到结尾
    5.如果N大于M则返回空字符串
    <字符串或字符串变量>[N:M:K]

  • 基本的format()格式化方法
    解决字符串和变量同时输出时的格式安排问题,通过.format()方法实现
    <模版字符串>.format(<逗号分隔的参数>)
    format()方法的槽除了包含参数序号,还可以包含格式控制信息
    {<参数序号>:<格式控制标记>}
    格式控制标记用来控制参数显示时的格式

:<填充><对齐><宽度><,><.精度><类型>
引导符号用于填充的单个字符<左对齐 >右对齐 ^居中对齐槽的设定输出宽度数字的千位分隔符 适用于整数和浮点数浮点数小数部分的精度或字符串的最大输出长度整数类型b,c,d,o,x,X浮点数类型e,E,f%

字符串类型的操作

字符串操作符、处理函数和处理方法

  • 3个字符串基本操作符
    x+y 连接字符串x与y
    xn或nx 复制n次字符串x
    x in s x是s的字串返回True,否则返回False

  • 内置函数
    len(x) 返回字符串x的长度,也可以返回其他组合数据的元素个数
    str(x) 返回任意类型所对应的字符串形式
    chr(x) 返回Unicode编码x对应的单字符
    ord(x) 返回单字符x表示的Unicode编码
    hex(x) 返回整数x对应十六进制数的小写形式字符串
    oct(x) 返回整数x对应八进制数的小写形式字符串

  • 处理方法
    str.lower() 返回小写副本
    str.upper() 返回大写副本
    str.split(sep=None) 返回列表,由str根据sep被分割的部分组成
    str.count(sub) 返回sub子串出现的次数
    str.replace(old,new) 返回所有old字串被替换为new的副本
    str.center(width,fillchar) 字符串居中
    str.strip(chars) 去掉左右侧的chars中列出的字符
    str.join(iter) iter是一个数组将iter变量每个元素后面+str

类型判断和类型间转换

  • 类型判断
    type(x)函数对变量x进行类型判断,适用于任何数据类型

  • 类型间转换
    1.int(x)
    将x转换为整数,x可以为浮点数或字符串
    2.float(x)
    将x转换为浮点数,x可以是整数或字符串
    3.str(x)
    将x转换为字符串,x可以是整数或浮点数

程序的控制结构

程序的三种控制结构

  • 顺序结构
  • 分支结构
  • 循环结构

程序的分支结构

单分支结构、二分支结构、多分支结构

  • 单分支结构
if <条件>:
   <语句块>
  • 二分支结构
if <条件>:
   <语句块1>
else:
   <语句块2>

简洁表达

<表达式1> if <条件> else <表达式2>
  • 多分支结构
if <条件1>:
   <语句块1>
if <条件2>:
   <语句块2>
...
else:
   <语句块N>

程序的循环结构

遍历循环、无限循环、break和continue循环控制

  • 遍历循环
for <循环变量> in <遍历对象>:
    <语句块>
  • 无限循环
while <条件>:
    <语句块>
  • 循环控制
    1.break 跳出当前最内层for或者whlie循环
    2.continue 提前结束当次循环后继续根据条件判断是否循环

程序的异常处理

try-except

try:
    <语句块1>
except:
    <语句块2>

函数和代码复用

函数的定义和使用

  • 定义
    通过保留字def定义函数
def  <函数名>(参数列表):
    <函数体>
    return <返回值列表>
  • 调用
    定义后的函数需要通过调用使用
<函数名>(<实际赋值参数列表>)

函数的参数传递

可选参数传递、参数名称传递、函数的返回值

  • 可选参数传递
    函数的参数在定义时可指定默认值,如果被调用时没有传入对应的参数值,则使用函数定义的默认值替代
def  <函数名>(<非可选参数列表>,<可选参数1>=<默认值N>...<可选参数N>=<默认值N>):
    <函数体>
    return <返回值列表>
  • 参数名称传递
    在调用函数时支持按照参数名称方式传递参数,不需要保持参数传递的顺序
<函数名>(<参数名>=<实际值>)
  • 函数的返回值
    1.return可以出现在函数中的任何部分
    2.可以同时将0、1或多个结果返回给函数被调用处的变量
    3.可以没有return

变量的作用域

局部变量和全局变量

  • 局部变量
    在函数内部使用的变量,仅在函数内部有效
  • 全局变量
    在函数外部定义的变量,程序执行的全过程有效。
    全局变量在函数内部使用需要使用global声明
global <全局变量>

组合数据类型

组合数据类型的基本概念

3大类型:集合、序列、映射类型。

  • 集合类型
    1.元素之间无序
    2.在集合中唯一存在
  • 序列类型:包括字符串类型、元组类型、列表类型
    1.存在先后关系
    2.可通过序号访问
    3.元素不唯一
  • 映射类型:字典类型
    1.k-v
    只考核列表、字典类型

列表类型

定义、索引、切片

  • 定义
    包含0或多个元素组成的有序序列
    用[]表示
    可通过该list(x)将集合或字符串类型转换成列表
  • 索引
    正向递增或反向递减序号
  • 切片
    切片后的结果也是列表类型
<列表或列表变量>[N:M]
<列表或列表变量>[N:M:K]

截取从N到M(不包含M)组成新的列表
当K存在时,以K为步长所对应元素组成的列表(不从0
开始,K从1开始递增到K)

列表类型的操作

列表的操作函数、列表的操作方法

  • 列表的操作函数
    列表继承序列类型的特点,有一些通用的操作函数
    len(ls) ls的长度
    min(ls) ls的最小元素
    max(ls) ls的最大元素
    list(x) 将x转变为列表
  • 列表的操作方法
<列表变量>.<方法名称>(<方法参数>)

ls.append(x)
ls.insert(i,x)
ls.clear()
ls.pop(i) 将第i项(从0开始)元素取出且从列表中删除该元素
ls.remove(x) 移除第一个x元素
ls.reverse()
ls.copy() 生成一个新列表,复制ls中所有元素

字典类型

定义、索引

  • 定义
    字典中每个元素是一个键值对
    {<键1>:<值1>,<键2>:<值2>,...,<键N>:<值N>}
  • 索引
    字典中键是值的索引,可以使用键值对关系索引元素
<值>=<字典变量>[<键>]
A={a:1,b:2,c:3}
a_= A[a]

字典类型的操作

字典的操作函数、字典的操作方法

  • 操作函数
    len(d) 字典d的元素个数
    min(d) 字典d中k的最小值
    max(d) 字典d中k的最大值
    dict() 生成一个空字典

  • 操作方法

<字典变量>.<方法名称>(<方法参数>)

d.keys() 返回所有k
d.valuse() 返回所有v
d.items() 返回所有k-v
d.get(key,default) 返回k对应的v,如果不存在则返回default
d.pop(key,default) 返回k对应的v并删除,如果不存在则返回default
d.popitem() 随机取出一个k-v,并以元组[k,v]形式返回
d.clear() 清空

文件和数据格式化

文件的使用

文件打开、读写和关闭

  • 打开
    通过open()函数打开一个文件,并返回一个操作文件的变量
<变量名>=open(<文件路径及文件名>,<打开模式>)
f=open("D:/bar.txt","r")

打开模式分为
r:只读
w:只写(覆盖)
x:创建写,文件若已存在报错
a:追加写:文件不存在则创建,存在则追加
b:二进制模式
t:文本文件,默认值
+:与r/w/a一起使用,在原有功能上追加读写能力

  • 关闭
    文件使用后调用close方法关闭
<变量名>.close()

  • 读写会根据文本文件或二进制文件打开方式有所不同。
    读取
    f.read() 读取整个文件内容
    f.readline() 读入一行内容
    f.readlines() 读入所有行,每行为元素形成一个列表
    f.seek(offset) 改变文件指针的位置,offset=0文件开头,1当前闻之,2文件结尾

  • f.wirte(s) 向文件写入一个字符串或字节流
    f.writelines(lines) 将lines列表写入文件

数据组织的维度

一维数据和二维数据

  • 一维数据
    由对等关系的有序或无序数据构成,对应数组或集合的概念
  • 二维数据
    由关联关系数据构成,对应于数学中的矩阵

一维数据的处理

采用特殊字符分隔数据。
通过字符串.join()方法将个元素表示为字符串,进行文件写入
通过字符串.split()方法分解个元素,从文件中读入一维数据,返回列表

f=open("city.csv","r")
ls=f.read().strip("\n").split(",")
f.close()
print(ls)
join = ",".join(ls)
print(join)

二维数据的处理

表示、存储和处理
等同于二维列表的操作,需要2层for循环实现对每个数据的处理

f=open("cpi.scv","r")
ls=[]
for line in f:
    ls.append(line.strip("\n").split(","))
f.close()
print(ls)
for row in ls:
    line=""
    for item in row:
        line+="{:10}\t".format(item)
    print(line)

采用CSV格式对一二维数据文件的读写

逗号分隔元素的存储格式叫CSV格式,是一种通用的、相对简单的文件格式
处理方法见上面的数组处理操作

Python计算生态

标准库

turtle库(必选)、random库(必选)、time库(可选)

turtle库(必选)

turtle是海龟绘图体系在Python中得到功能实现
函数库的引入

import turtle
import turtle as t
from turtle import *
from turtle import textinput
  • 绘制状态函数
    1.pendown()
    别名pd() 画笔落下,移动将绘制形状
    2.penup()
    别名pu() 画笔抬起,移动不绘制形状
    3.pensize(width)
    别名width(width) 设置画笔宽度
  • 颜色控制函数
    1.color(r,g,b)
    color(colorstring)或color(r,g,b) 返回或设置画笔及背景颜色
    2.pencolor(r,g,b)
    pencolor(colorstring)或pencolor(r,g,b)
    返回或设置画笔颜色,于color()函数不同,对于没有背景需要填充的应用,使用该函数更为合理
    3.begin_fill()
    在绘制带有填充色彩图形之前调用,开始填充
    4.end_fill()
    在绘制带有填充色彩图形之后调用,结束填充
  • 运动控制函数
    1.forward(distance)
    别名fd(distance),画笔向当前方向前进distance距离,为负数时则后退
    2.backward()
    别名bk(distance),画笔向反相向前进distance距离,为负数时则后退
    backward()不改变画笔运动朝向方向,相当于后退着前进
    3.right(angke)
    别名rt(angle),向右改变相对角度值angle
    4.left(angle)
    别名lt(angle),想左改变相对角度值angle
    5.setheading(to_angle)
    别名seth(to_angle),设置当前前进方向角度为to_angle
    6.goto(x,y)
    将画笔移动到绝对位置(x,y)处
    7.circle(radius,extent=None)
    根据半径radius,绘制extend角度的弧形,当extenet为None时,绘制整个圆形

random库(必选)

random库用于产生并运用随机数的标准库。考察9个函数

  • seed(a)
    设置随机数种子a,a可为整数或浮点数
    如果不设置a则默认a为系统时间产生的随机数种子,设置a后可以重复再现相同的随机数序列
  • random()
    生成一个[0.0,1.0)之间的随机小数
  • randint(a,b)
    生成一个[a,b]之间的随机整数
  • getrandbits()
    生成一个k bit长度的随机整数
  • randrange(start,stop[,step])
    生成一个[start,stop)之间以step为步数的随机整数
    例如randrange(0,100,5)则生成的整数在5,15...95当中
  • uniform(a,b)
    生成一个[a,b]之间的随机小数
  • choice(seq)
    从序列seq中随机返回一个元素。seq可以为字符串、列表等
  • shuffle(seq)
    将序列seq中元素随机排列,返回打乱后的序列
  • sample(pop,k)
    从pop中随机选取k个元素,以列表类型返回

time库(可选)

获取并展示时间信息的标准库
可选表示该库不作为考前必学内容,不需要记住该库的使用及功能,考核时将给出函数功能介绍和描述,类似“开卷”考试

基本的Python内置函数

提供68个内置函数,不需要引用库而是直接使用,考核其中的31个:
abs()、all()、any()、bin()、bool()、chr()、complex()、dict()、divmod()、eval()、exec()、float()、hex()、input()、int()、len()、list()、max()、min()、oct()、open()、ord()、pow()、print()、range()、reversed()、round()、str()、sum()、type()
具体的函数意义
//TODO

第三方库的获取和安装

Python提供pip工具进行第三方库安装
考核pip命令用来获取和安装第三方库的常用方法

  • pip -h
    pip命令帮助信息
  • pip install <安装库名>
    安装一个库
  • pip uninstall <卸载库名>
    卸载一个库
  • pip list
    列出已经安装的第三方库
  • pip show <查询库名>
    列出已安装的第三方库详细信息
  • pip download <下载库名>
    下载第三方库
  • pip search <查询关键字>
    联网搜索库名或摘要中存在的关键字

脚本程序转变为可执行程序的第三方库:PyInstaller库

PyInstaller是Python第三方库,可讲Python源文件(.Py)打包变成可执行文件。
考察掌握将源代码变为可执行文件的方法,需要在命令行运行

  • 打包方法
    pyinstaller <Python源程序文件名>
    源文件目录将生成dist和build两个文件夹,build是临时存储文件的目录,可以删除。最重的打包程序在dist内部与源文件同名的目录中
  • 增加参数
    1.-F 在dist文件夹中只生成独立的打包文件
    pyinstaller -F <Python源程序文件名>
    2.-I 指定打包程序使用的图标文件
    pyinstaller -I <.ico图标文件名> -F <Python源程序文件名>

第三方库

jieba库(必选)、wordcloud库(可选)

jieba库(必选)

第三方中文分词函数库
支持3种分词模式:精确模式、全模式、搜索引擎模式

  • 精确模式
    将句子最精确地切开,适合文本分析
    jieba.lcut(x) 精确模式返回中文文本x分词后的列表变量

  • 全模式
    把所有句子中多有可以成词的词语都扫描出来,速度非常快,但不能解决歧义

jieba.lcut(x,cut_all=True) 全模式返回中文文本x分词后的列表变量

  • 搜索引擎模式
    在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
    lcut_for_search(x) 搜索引擎模式返回中文文本x分词后的列表变量

  • 增加分隔的单词
    jieba.add_word(w)
    向分词词典中增加新词w,用于以后分隔的标准

wordcloud库(可选)

根据文本生成词云的Python第三方库,可选
//TODO

更广泛的Python计算生态

只要求了解第三方库的名称,不限于以下领域:网络爬虫、数据分析、文本处理、数据可视化、用户图形界面、机器学习、Web开发、游戏开发等

  • 要求能够辨明一些主要第三方库的大致功能,即将“库名称”和“库功能”进行关联。不考核第三方库的功能应用
  • 网络爬虫
    requests、scrapy、pyspider
  • 数据分析
    numpy、pandas、scipy
  • 文本处理
    pdfminer、python-docx、beautifulsoup4
  • 数据可视化
    matplotlib、seaborn、mayavi
  • 用户图形界面
    PyQt5、wxPython、PyGObject
  • 机器学习
    scikit-learn、TensorFlow、mxnet
  • Web开发
    Django、pyramid、flask
  • 游戏开发
    pygame、Panda3d、cocos2d
  • 大数据分析
    opencv-python、NLTK、networkx

考试方式

单项选择题40分(含公共基础知识部分10分)
操作题60分(包括基本编程题和综合编程题)
单选题与编程题分别考核,先答完单选题部分并提交后才能够开始答编程题部分。

单选题

先公共基础知识在Python题目方式组织
1~10公共基础
11~40Python科目考题

操作题

3道基本编程题、2道简单应用题、1道综合应用题

  • 基本编程题
    每题5分,共3题
    考察Python语言的程序编写能力,代码规模在5行以下

  • 简单应用题
    第一题10分,第二题15分,共2题
    考察解决简单应用问题能力,代码规模在5~10行之间
    第一题以turtle绘图题为主

  • 综合应用题
    20分,共1题
    考察解决综合应用问题的能力,代码规格在20~4-行之间,一般会给出部分代码







这个家伙很懒,啥也没有留下😋