Python-考试向-第一学期知识点总结

前言

经过了一个学期的python学习,终于…期末考试它来了!这里就大概总结一下这个学期所学到的知识吧,冲冲冲!

Python第一学期知识点

1.初识python

  • python的工作区域分为交互界面编辑器编辑器是让我们保存自己所写的一些代码/程序,交互界面是暂时性的运行某一段语句,并不能将语句保存,而编辑器可以保存我们所写的一长段语句。
  • 编辑器相较于Anaconda自带的Spyder,本人偏向于IDLE这个原生的编辑器,能够在原生环境中编辑,可以更加理解Python语言的一些特性。

2.Python语言基础

2.1 - Python语法特点

特点说明注释规则在这里插入图片描述代码缩进在这里插入图片描述编码规范每个import语句只导入一个模块、不要行尾添加“;”等诸如此类的规范。

2.2 - Python中的变量
  • Python中的保留字不可作为变量命名,例如if,for,True
  • Python的语言标识符命名只能由字母,下划线"_"和数字组成,而且第一个字符不能是数字,不能是保留字。
2.3 - 基本数据类型
2.3.1数据类型

数据类型说明数字整数(其中包括二级制、八进制、十六进制的数)、浮点数、复数(和数学上的一样),这些都可 直接用于计算字符串用一组单引号’ '或者双引号" "括起来的文本就是字符串,可以是数字类型,可以用于字符串操作布尔类型主要用来表示真假,可以用于循环和条件判断语句中的表示条件真假,也可用于计算,True=1False=0

其中字符串还有一些特定的转义字符

转义字符说明转义字符说明续行符n换行符0空t水平指标符,用于横向调到下一指标位"单个双引号’单个单引号\一个反斜杠f换页0dd八进制数,dd表示字符,如012表示换行xhh十六进制数,hh代表的字符,如x0a代表换行

2.3.2 - 数据类型的转换

函数作用int(x)将x转换成整数类型float(x)将x转换成浮点数类型complex(real [,imag])创建一个复数str(x)将x转换成字符串repr(x)将x转换成表达式字符串,例如repr(‘123’)=" ‘123’ "eval(x)计算在字符串中的有效python表达式并返回计算的值,例如eval(‘1+2’)=3chr(x)将字符x转换为它对应的整数值hex(x)将一个整数x转换为一个十六机制的字符串oct(x)将一个整数转换为一个八进制的字符串

P.S 这里的 int(x) 函数只会保留整数部分的数字,并不会为我们进行四舍五入的处理,例如int(2.6)=2而不是3,需要四舍五入处理的就需要使用 round(x,n) 函数。

Q:0.2+0.3 == 0.5会返回True

  相信大部分小伙伴都觉得会返回Ture,但是并不是每一次都会返回True。因为计算机中float浮点数类型的数据都是以二进制来保存的,因此会保存接近的数字来代替这个数字,因此计算中能不用float类型计算就不用,那么要如何解决小数计算的问题?这里就提现出了 round(x,n) 的用武之地了,x是数字或者变量,n是保留小数点后n位小数,round(x,n) 函数就能够保证像0.2 + 0.3 == 0.5这种小数计算返回的结果是True而不是有时会出现False

2.4 - 基本输入和输出

x = input(‘请输入x’)

  这里的x就是输入的内容保存在变量x中,注意!!!输入的内容全部为字符串,例如输入123,我们认为他是数字类型,但实际上是字符串类型的’123’,因此如果需要将x用于数学计算,需要使用上述的类型转换语句进行转换。

print(‘Hello World’)

  这里就会在交互界面输出一句Hello World,print([, sep= , end=]) 函数可以用于输出字符串或者数字,但是如果要输出不同类型的字符串内容必须要用,分隔开,例如print(0.3,‘ABC’),然后其中的sep、end参数是对一些变量的设置。假如要print出不同类型的内容,那么上述格式输出的结果是0.3 ABC,会有空格,因为 print() 函数中不同类型的间隔符默认为一个空格,因此可以在sep=后面输入’’ 两个单引号来定义这些变量之间的间隔符为;同时print()函数中每打印一行都会在末尾加一个 n 换行符,因此只是使用语句print()不是会打印出没有东西,而是会打印出一个换行符,即换行。

3.运算符与表达式

3.1 - 运算符

算数运算符说明赋值运算符说明+加=简单的赋值运算-减+=加赋值乘-=减赋值/除=乘赋值%除之后返回余数/=除赋值//除之后返回整数部分%=取余数赋值=幂赋值//=取整除赋值逻辑运算符说明and逻辑 比较(关系)运算符说明or逻辑 >大于not逻辑 <小于==等于位运算符说明!=不等于&按位 >=大于或等于|按位 <=小于或等于^按位 异或~按位 取反<<左移位>>右移位

3.2 - 运算符的优先级

> ~,+,- > ,/,%,// > +,- > <<,>> > & > ^ > | >* <,<=,>,>=,!=,==

4.流程控制语句

4.1 - 选择语句
4.1.1 - 单分支语句

if <表达式1>:
 <语句块1>

4.1.2 - 二分支语句

if <表达式1>:
 <语句块1>
else:
 <语句块4>

  二分支语句还有一种紧凑格式如下:

<语句块1> if <表达式1> else <语句块2>

4.1.3 - 多分支语句

if <表达式1>:
 <语句块1>
elif <表达式2>:
 <语句块2>
elif <表达式3>
 <语句块3>
else:
 <语句块4>

  多分支语句会从上到下进行表达式的判断,一旦符合就会进入相对应的语句块执行,因此需要注意表达式之间的关系,根据实际情况来编辑。

4.2 - 循环语句
4.2.1 - while 循环

while .<条件表达式>:
  <语句块>

  表达式中如果填写True,那么就会形成死循环:下属语句块中如果没有break语句来跳出循环,那么就会一直执行循环不停止。

for <迭代变量> in <对象>:
  <语句块>

  这里的迭代变量,是会遍历对象的每一个元素,即字符串以及下文会提到的组合类型数据都可用于这里的对象。
  for与while循环的最大区别就是,while可以执行死循环,for不可以,而且while循环是所有编程程序中通用的循环语法,for语句是python特有的语句。

4.3 - 循环中经常用到的保留字

字符说明break跳出循环,即执行完前面语句块之后就停止循环continue跳出本次循环直接进入下一次循环pass占行符,不做任何事情

P.S 还有一种列表的紧凑格式:

lst = [<对象> for <迭代对象> in <list>]

  这种格式的好处就是精简代码,不用赋值一个空列表,然后再循环添加到列表里面,一句就可以实现多句的内容,这里的对象可以是另外一个列表的内容也可以是一些数字。

5.组合数据类型

组合数据说明列表有序且可以对其中的元素进行操作元组不可对其中的元素进行操作,但是能用于很多映射函数的操作字典每一个键=值对都是无序的,可以通过键的操作来找到对应的值集合无序,可以对其中的元素进行操作,但是没有重复的元素

5.1- 列表

函数或方法描述lst[i] = x替换列表lst第i+1个元素为xlst[i: j: k] = lst1用列表lst1替换lst切片后所对应元素子列表del lst[i]删除列表lst第i+1个元素del lst[i: j: k]删除列表lst第i+1到第j以k为步长的元素lst += lst1更新列表lst,将列表lst1元素添加到列表lst中lst *= n更新列表lst,其元素重复n次lst.append(x)在列表lst最后增加一个元素xlst.clear()删除列表lst中所有元素lst.copy()生辰给一个新列表,赋值lst中所有元素ls.insert(i,x)在列表lst的第i个位置增加元素xls.pop(i)将列表lst中第i+1位置元素去除并删除该元素ls.remove(x)将列表lst中出现的第一个元素x删除ls.reverse()将列表ls中的元素反转

  注意,这里的lst.copy()语句就是用于创建两个一模一样的列表,假设现在有一个列表lst,想创建一个lst1与lst相同元素的列表作用于不同地方,那么不能用lst1 = lst,而是使用lst1 = lst.copy()。

5.2 - 元组
  • 元组是一种序列类型,一旦创建就不能被修改
  • 使用小括号()或tuple()创建,元素间用逗号,分隔。
  • 可以使用或不使用小括号。
  • 元组类型的操作,跟上述的列表操作相似,但是不能修改创建后的元组,因此不存在append、del这种序列方法作用于元组上。
5.3 - 字典

函数或方法描述del d[k]删除字典d中键k对应的数据值k in d判断键k是否在字典d中,如果在返回 True ,否则Falsed.keys()返回字典d中所有的键信息d.values()返回字典d中所有的值信息d.items()返回字典d中所有的键值对信息d.get(k, <default>)键k存在,则返回相应值,不在则返回 <default> 值d.pop(k,<default>)键k存在,则去除相应值,不在则返回 <default> 值d.popitem()删除所有的键值对len(d)返回字典d中元素的个数

5.4 - 集合
  • 集合类型与数学中的集合概念一致。
  • 集合元素之间无序,每个元素唯一,不存在相同元素。
  • 集合元素不可更改,不能是可变数据类型
  • 集合的操作方法跟上述的序列操作方法一致,只是不能修改其中的元素,集合用 大括号{} 表示,元素之间用逗号分隔,建立集合还可使用set()。

操作符及应用描述S|T返回一个新集合,包括集合S和T中的所有元素S - T返回一个新集合,包括在集合S但不在T中的元素S&T返回一个新集合,包括同时在集合S和T中的元素S ^ T返回一个心机和,包括集合S和T中的非相同元素S <= T 或S < T返回 TrueFalse ,判断S和T的子集关系S >= T或S > T返回 TrueFalse ,判断S和T的包含关系

在这里插入图片描述

6.字符串

6.1 - 字符串编码转换

  编码大致分为 ASCII,GBK,GB2312,UTF-8 编码,其中 GBK和GB2312是我国制定的中文编码标准,使用一个字节表示一个字母,两个字节表示一个中文字符UTF-8是国际通用的编码。

str.encode(encoding=‘utf-8’)

  编码转换使用到encode()语句,对象是str字符串类型,()里面的是可选参数,默认都是utf-8编码。

bytes.decode(encoding=‘utf-8’)

  bytes表示要进行转换的二进制数据,通常用encode()方法转换的结果。

6.2 - 字符串常用操作

  序列的操作方法也可用于字符串,例如len(),可以得到字符串的长度

for i in str:
  print(i)

  这个和print(str)不同,这里是将str中的所有字符串逐渐赋值给i,然后通过每一次循环print出i,这里print()出一个就会换行,因此输出的结果是竖着而不是全部一起输出,这个操作可以用于一些对输出文本进行加工。

函数及使用描述len(x)长度,返回字符串的长度str(x)任意类型x所对应的字符串形式hex(x)或oct(x)整数x的十六进制或八进制小写形式字符串chr(u)x为Unicode编码,返回其对应的字符ord(x)x为字符,返回其对应的Unicode编码

6.3 - 字符串的处理

方法及使用描述str.lower()或str.upper()返回字符串的副本,全部字符小写/大写str.split(sep=None)返回一个列表,由str根据sep被分隔的部分组成str.count(sub)返回字符sub在str中出现的次数str.replace(old,new)返回字符串的副本,所有old字符被替换成newstr.center(width[,fillchar])字符串str根据宽度width居中,fillchar可选str.strip(chars)从str中去掉在其左侧和右侧chars中列出的字符str.join(iter)在iter变量除最后元素歪每个元素增加一个str

6.4 - 字符串的格式化
  • ‘%-0[.n]格式化字符串’%exp
    其中-表示左对齐,+表示右对齐,0表示右对齐,正数前方元符号,负数前方加负号,用0填充空白处,m表示占有宽度,.n表示小数点后保留的位数

%字符串格式化中常用的格式化字符

格式字符说明格式字符说明%s字符串(常用str()显示)%r字符串(采用repr()显示)%c单个字符%o八进制整数%d或%i十进制整数%e指数(基底写为e)%x十六进制整数%E指数(基底写为E)%f或者%F浮点数%%单个%号

  • ‘格式化字符串{indexalign]signwidth[type]}’.format()

格式字符说明格式字符说明S对字符串类型格式化b将十进制整数自动转换成二进制表示再格式化D十进制整数o将十进制整数自动转换成八进制表示再格式化C将十进制整数自动转换成对应的Unicode字符x或者X将十进制整数自动转换成十六进制表示e或者E转换成

  • f’{x}格式化字符串’

  以上三种便是字符串格式化的操作,最后一种f’'的操作跟%的操作一样就不再重复。

7.函数的创建与调用

7.1 - 创建函数

def functionname([parameterlist]):
  ["‘comments’"]
  [functionbody]

  • funcionname:函数名称,在调用函数时使用
  • parameterlist:可选参数,用于指定向函数中传递的参数。如果有多个参数,各参数间使用逗号分隔。如果不指定,则表示该函数没有参数。在调用时,也不指定参数。

  定义函数一般放在程序的开头,在下面主程序的时候再进行调用以实现功能。

7.2 - 调用函数

funcionname([parameterlist])

这里就是调用了函数,这里的格式就跟上述定义函数一样,()中填了参数就是将参数传递给函数体,如果没有填,那么只是执行语句块functionbody。

7.3 - 参数传递

  参数大致分为六种:形式参数,实际参数,位置参数 ,关键字参数,默认参数,可变参数

  • 形式参数:写在定义函数里面的函数就叫做形式参数,用于函数体里面的参数传递
  • 实际参数:在调用函数时填写的参数就叫做实际参数。
  • 位置参数:必须按正确的顺序传到函数中,即调用时的数量和位置必须和定义时是一样的。
  • 关键字参数:是指使用形式参数的名字来确定输入的参数值。
  • 默认参数:调用函数时,如果没有指定某个参数会抛出异常,为参数设置默认值就可以解决这个问题。
  • 可变参数:不定长参数,传入函数中的直接参数可以是任意个。
7.4 - 返回值

  在函数里面运算得到的结果是只能用于函数体里面,没法在整个程序中使用,因此才会出现global全球变量和return返回值。

  • global <变量> - 在后面写上的可以在全局中调用,要在函数体的开头声明。
  • return <变量> - 用于返回值,可以是多个值。

8.模块

  模块主要包括三种模块:内置模块,开源模块和自定义模块

  • 内置模块:类似于math,os这种模块是python自带的,可以直接只用import <模块>或from <模块> import <函数>语句进行调用不需要再自行安装。
  • 开源模块:类似于matplotlib,numpy这种模块就是第三方模块,需要自己使用pip进行安装才可以在python上使用。
  • 自定义模块:自己定义的模块,模块就是.py自己编辑的函数文件,使用的前提是程序和模块放在同一个目录下。调用模块时,模块名字直接输入.py文件的名字即可。

import <模块> as name

  有时我们会见到很长名字的模块名字,比如matplotlib.pyplot,每次调用函数的时候都极其麻烦,因此可以使用as对这个模块的前缀进行命名,例如:

import matplotlib.pyplot as plt

  这样在调用matplotlib.pyplot.plot(x,y)绘制折线图的时候可以直接输入plt.plot(x,y)即可。

9.异常处理及程序调试

9.1 - 异常类型

异常描述NameError尝试访问一个没有声明的变量引发的错误IndexError索引超出序列范围引发的错误IndentationError缩进错误ValueError传入的值错误KeyError请求一个不存在的字典关键字引发的错误IOError输入输出错误ImportError当import语句无法找到模块或from无法在模块中找到相应的名称时引发的错误AttributeError尝试访问位置的对象属性引发的错误TypeError类型不适合引发的错误MemonryError内存不足ZeroDivisionError除数为0引发的错误SyntaxErrorPython解释器语法错误

P.S 这里最后的SyntaxError,在python自带的编辑器IDLE中是弹窗警告,跟Spyder不同,Spyder可以直接抛出SyntaxError,而IDLE是抛出错误弹窗,这里需要注意!

9.2 - 异常处理语句

try:
  block1
except [ExceptionName [as alias]]:
  block2
[
except [ExceptionName [as alias]]:
  block…
]

  这是一次性捕捉的语句,block1就是捕捉block1里面的错误,然后抛出错误类型,如果block1中出现错误,就会立刻执行block2的语句。这里面的ExceptionName就是错误类型的名字,大小写必须区分!,在这里填上了错误类型,那么就会指定捕捉抛出的某个异常然后执行下面缩进的语句,因此在try后面可以添加多个except来捕捉不同类型的错误,从而执行不同的语句。[as alias]就是将错误原因赋值给alias,在后面可以print(alias)出错误原因。

try:
  bloack1
except [ExceptionName [as alias]]:
  block2
else:
  block3

  这里多加个else,意思就是在这个捕捉异常的语句中如果没有出现错误,那么就会执行else下面block3的内容,一旦出现错误就不会执行else下面的block3内容。

try:
  bloack1
except [ExceptionName [as alias]]:
  block2
else:
  block3
finally:
  block4

  这里是最完整的异常处理语句了。在末尾加上finally语句,意思就是不管有没有对错,在执行完前面的语句之后都会执行block4的内容,

10.文件及目录操作

10.1 - 文件操作
10.1.1 - 文件的打开方式

  在python中,想要操作文件需要先创建或者打开指定的文件并创建文件对象。这可以通过内置的open()函数实现。open()函数的基本语法格式如下:

file = open(filename[,mode[,buffering]])

  • file:被创建的文件对象
  • filename:要创建或者打开的文件对象,需要使用单引号或者双引号括起来。如果打开的文件和当前文件在同一个目录下,直接写文件名即可,否则需要制定完整路径。(文件面包括后缀)
  • mode:可选参数,用于指定文件的打开模式。参数值如下:

值说明r以只读模式打开文件。文件的指针将会放在开头rb以二进制格式打开文件,并且采用只读模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片,声音等r+打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容(从文件开头进行覆盖)rb+以二进制格式打开文件,并且采用读写模式。文件的指针将会放在文件的开头,一般用于非文本文件,如图片,声音等w以只读模式打开文件wb以二进制打开文件,并且采用只写模式。一般用于非文本文件,如图片、声音等w+打开文件后,先清空原有内容,使其变成一个空的文件,对这个空文件有读写权限wb+以二进制格式打开文件,并且采用读写模式。一般用于非文本文件,如图片、声音等a以追加模式打开一个文件。如果该文件已经存在,文件指针将会放在文件的末尾(即新内容会被写入到已有的内容之后),否则,创建新文件用于写入ab以二进制格式打开文件,并且采用追加模式。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入a+以读写模式打开文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入已有内容之后),否则,创建新文件用于读写

注意: 表格中以r开头的参数使用的前提是文件必须存在,如果不存在会抛出错误。'w’模式及其衍生的模式,如果以这个模式打开的文件存在,就会将其覆盖,否则创建新文件。
  以一般模式打开文件,文件指针都会放在开头,如果需要指针移位,可以使用seek()函数,其用法如下:

f.seek(i)

  这里的seek(i)就是指定文件的指针在第i个字符,意思就是指定指针从第i个字符开始,要注意在utf-8编码中,一个中文字体算两个字符,一个英文字体算一个字符,如果指针里面的i填写不正确会抛出乱码异常。

  除了上述的打开方式以外,还有使用with语句的打开方式:

with open(filename) as f:
  with-body

这里是使用with语句进行打开文件,这种打开文件的方式较第一种直观,如果写入字符串进某个文件,不需要使用到关闭文件的操作,因为上面语句中把打开文件赋值给了一个变量,因此在使用结束之后必须要有关闭文件的操作才行。with语句中的open()函数跟上述的一模一样。

10.1.2 - 读取文件

读取文件的函数有以下几种:

函数说明]f.read(i)读取文件中i个元素,如果不填默认读取全部f.readline()读取文件中一行元素,中间如果填写i的话就是读取i个元素f.readlines()读取文件中所有元素,并且以换行符分隔(不去除分隔符,保留在上一行中)返回一个列表

10.1.3 - 写入文件

写入文件的方法有以下几种:

函数说明f.write()写入字符串对象f.writelines()写入字符串列表,但是不添加换行符

  如果使用第一种方式打开文件,那么写入文件之后需要使用f.close()语句才可以对写入的内容进行保存,而且写入的内容不会在末尾添加换行符。

10.2 - 目录

  在python中,内置了os模块及其子模块os.path用于对电脑目录或文件进行操作,在导入了os模块之后可以直接使用子模块os.path。
os模块提供的与目录相关的函数如下:

函数说明getcwd()返回当前的工作目录listdir(path)返回指定路径下的文件和目录信息mkdir(path [,mode])创建目录makedirs(path1/path2…[,mode])创建多级目录rmdir(path)删除目录removedirs(path1/path2…)删除多级目录chdir(path)把path设置为当前工作目录walk(top[,topdown[,onerror]])遍历目录树,该方法返回一个元组,包括所有路径名、所有目录列表和文件列表3个元素

os.path模块也提供了一些操作目录的函数如下:

函数说明abspath(path)用于获取文件或目录的绝对路径exists(path)用于判断目录或者文件是否存在,如果存在则返回 True,否则返回 Falsejoin(path,name)将目录与目录或者文件名拼接起来splitext()分离文件名和扩展名basename(path)从一个目录中提取文件名dirname(path)从一个路径中提取文件路径,不包括文件名isdir(path)用于判断是否为有效路径

后语

  感谢大家细心看到最后,以上便是本人在第一学期学到的知识,这是个人向的总结,可能不适合用于其他人,同时这个也是对自己的一份总结,看完觉得有用的可以收藏/点赞一下o( ̄▽ ̄)d~

以下是本人写过的一些文章:
[Python-2018年"泰迪杯"数据分析职业技能大赛B题任务一-个人代码分享]
https://blog.csdn.net/weixin_45921726/article/details/103537748
[Python-计算抛硬币出现连续10次正面朝上的概率的仿真实验]

https://blog.csdn.net/weixin_45921726/article/details/103513542

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://blog.itliujia.cn/info/20210665.html
-- 展开阅读全文 --
软著申请的大体时间周期记录以及注意事项
« 上一篇 06-10
Linux 常用命令学习
下一篇 » 06-17

发表评论