AI小组第一阶段笔记

一、基础编程

Python输入输出

01_Print输出函数

print()用于打印输出,是最常见的一个函数 语法:print(*objects, sep=' ',end=\n', file=sys.stdout, flush=False) 参数说明: 1、objects:表示输出一个或者多个对象。输出多个对象需要用sep分隔 2、sep:输出多个对象时使用sep分隔,默认值是一个空格 3、end:输出结束以end结尾,默认值是换行符,可以换成其他字符串 4、file:要写人的文件对象,默认为终端输出 5、flush:输出是否被缓存通常决定于file,但如果fush关键字参数为True,流会被强制刷新

02_Input输入函数

语法:input([prompt]) 参数说明:prompt:提示信息 输入的变量均为 str 字符串类型 int()可以转换成整数

常量、变量与运算符

01_常量与变量

常量:程序中使用的具体的数、字符。在运行过程中,值无法更改 变量:表示一个存储单元,其中存储的值可以修改 变量命名: 1、只能包含字母、数字、下划线 2、只能以字母、下划线开头 3、不要使用关键字作为变量名称

02_基础数据类型

整数:int 浮点数:float 字符串:str 布尔:bool 获取变量类型:type函数

int转foat:直接转换 float转int:舍弃小数 int转bool:非0:True、0:False bool转int:False:0、True:1 转str:直接转换

03_运算符

算术运算符:+、*、/、//(整除)、%(求余)、**(幂) 关系运算符:>、<、==、!=、>=、<= 赋值运算符:=、+=、-=、*=、/=、%=、//=、**= 逻辑运算符:and、or、not 成员运算符:in、not in 身份运算符:is、is not

二、选择结构与循环结构

条件表达式和逻辑表达式

01_条件表达式:关系运算符

关系运算符用于数值的大小比较,一般用于条件表达式 包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种 它们都是双目运算符 关系运算符运算的结果是bool型,值只有两种:False或True False代表关系不成立,True代表关系成立

02_逻辑表达式

Python语言中提供了三种逻辑运算符: 与运算(and)、或运算(or)、非运算(not) 与运算符和或运算符均为双目运算符,具有左结合性 非运算符为单目运算符,具有右结合性

短路操作:在Python 中,and 和or不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果另外,and和or运算符会将其中一个表达式的值作为最终结果,而不是将True或者False作为最终结果

对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,所以 Python 按照下面的规则执行and 运算:如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么都不会影响最终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果

如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果

对于or运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行or运算:如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时or会把左边表达式的值作为最终结果

如果左边表达式的值为假,那么最终值是不能确定的,or会继续计算右边表达式的值,并将右边表达式的值作为最终结果

if语句

01_if语句

格式:if 表达式: 代码块 代码块需要缩进、“表达式”可以是一个单一的值或者变量,也可以是由运算符组成的复杂语句,形式不限,只要它能得到一个值就行

02_if-elif-else语句

格式:if 表达式1: 代码块1 elif 表达式2: 代码块2 elif 表达式3: 代码块3 ...其他elif语句 else: 代码块n 含义: 如果满足表达式1,则执行代码块1 否则如果满足表达式2,则执行代码块2 ... 否则,则执行代码块n

for语句

01_range 函数

range()函数用于生成一系列数字,用于循环结构的遍历 在python2中生成一个数字列表,python3中是一个可迭代对象(可遍历的)range(start, stop,step) 从start开始(默认为0),到stop结束(不含stop),步长为step(默认为1) range(5)等价于 range(0,5)等价于 range(0,5,1):0,1,2,3,4 range(0,10,3):从0开始到10结束(不含10),步长3:0,3,6,9 range(0,9,3):从0开始到9结束(不含9),步长3:0,3,6 range(10,-1,-2):从10开始到-1结束(不含-1),步长-2:10,8,6,4,2,0

02_for语句

格式:for <variable> in <sequence>: 代码块: <variable>:循环变量,一般为i,j,k <sequence>:序列或者可迭代的对象,一般为range(xx)

while语句

01_while语句

格式:while条件表达式: 代码块

条件表达式成立,执行代码块

02_break和continue

break语句可以跳出for和while的循环体 continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环

循环嵌套

01_两种循环的区别

for循环:常用于已知循环次数的情况,或者遍历List、Dict等数据结构 while循环:不知道循环次数,但是可以通过终止条件停止循环 在一定程度上两者可以互相转换 eg.从1遍历到99:用for循环 从1+2+….,加到和超过1000停止:用while循环

02_循环嵌套

当2个(甚至多个)循环结构相互嵌套时,位于外层的循环结构常简称为外层循环或外循环,位于内层的循环结构常简称为内层循环或内循环 for i in range(3): for j in range(3): print("i =",i,"j=",j) 先执行外循环,对于外循环的每一个i,执行内循环

循环嵌套中的break和continue break语句适用于嵌套循环中,它的作用只是使程序跳出本层循环结构 continue语句也可以适用于循环结构中,作用仍然跳过本次循环,执行下一次循环

如何跳出多重循环? 可以设置一个跳出循环的标记 如果需要一次跳出多重循环的时候,可以将这个标记为标记成true 那么在下一层循环也判断一下是否需要继续跳出循环

三、基础数据结构

列表与元组

01_列表

列表(list)由一系列按照特定顺序排列的元素组成 []表示列表,逗号分隔元素 [element 1, element 2, element 3, ., element n] elementi表示列表中的元素,个数没有限制,可以是任意数据

列表——访问列表 列表是有顺序的,访问任何元素需要通过“下标”访问 所谓“下标”就是指元素在列表中从左往右为第几个,下标从0开始 下标只能为[-n,n-1],分为[0,n-1](顺数第几个)、[-n,-1](倒数第几个)

列表——添加元素 在末尾添加单个元素: a.append(x):列表a末尾添加元素x

在末尾添加多个元素: a.expend(x):列表a末尾添加x,x为可迭代对象,包括列表、元组、字符串等不可为单个数字 在中间插入元素: a.insert(idx,x):列表a在下标为idx位置插人元素x,原来下标大于等于idx的元素往右移动一个位置

列表——删除元素 利用del删除列表中的元素 del a[idx]:删除列表a中下标为idx的元素 利用pop删除列表中的元素 a.pop(idx):删除列表a中下标为idx的元素 a.pop():删除列表a中最后一个元素 区别: del 删除没有返回值,pop删除返回的是删除的那个元素

根据值删除元素: a.remove(x):删除列表a中值为x的第一个元素

如何删除列表中所有的x? 利用循环结构+remove in 表达式:x in a:判断x是否在列表a中,在为True,否则为False

列表——查找元素 a = ['apple','banana','cat','dog','apple'] print(a.count('apple')) #在整个列表中查找第一个'cat' print(a.index('cat')) #从下标3开始查找第一个'cat' print(a.index('cat',3))

列表——翻转列表 a.reverse():列表a进行翻转,调用2次则变回原列表

列表——求出列表长度 len(a):求出列表a的长度

02_操作列表——遍历整个列表

利用 for 循环遍历列表,同时获取下标 a = ['apple','banana','cat','dog'] for idx, x in enumerate(a): print(idx,x) enumerate(a,start=0) 将列表a每个元素和对应的下标组合为一个带索引的序列,下标默认从0 开始,遍历的时候同步遍历下标和值

操作列表——创建数值列表 利用range函数+list a = list(range(5)) b=list(range(0,10,3)) c=list(range(10,-1,-2))

操作列表——列表操作符 +:连接两个列表 a*x:a是list,x是int,构成一个新列表,其内容为a复制x次

操作列表——内置函数 sum(a):求序列a的和 max(a):求序列a中的最大值 min(a):求序列a中的最小值

操作列表——列表解析式 列表解析式:可以基于已有列表生成相关的新列表 [expression for member in iterable] 对于可迭代对象iterable的每个元素member,都执行expression构成新的列表 a = [x**2 for in range(11)] print(a) [0,1,4,9,16,25,36,49,64,81,100] 对于range(11)中的每个元素x,新列表的元素为x^2

操作列表——列表解析式 列表解析式:可以基于已有列表选并生成相关的新列表 [expression for member in iterable if conditional] 对于可迭代对象iterable的每个元素member,如果满足条件conditional,才执行expression构成新的列表 a = [x**2 for xin range(ll)if x % 2 == 0] print(a) [0,4,16,36,64,100] 对于range(11)中的每个元素x,需要满足x为偶数,才加入新列表,新列表元素为x^2

操作列表——列表切片 切片:列表的部分元素组成的新列表 a[starts: end: tep] start:切片的下标起点(包含起点),默认为0 end:切片的下标终点(不包含终点),默认为列表长度 step:切片的步长,默认为1 与range用法基本类似,只是range是数字序列,而切片面向的是任意list

操作列表——复制列表 利用切片:b=a[:] 利用copy函数:b=a.copy()

03_元组

元组:与列表类似,是由一系列按额定顺序排序的元素组成 用()创建,或者用tuple创建 与List区别: List是可修改的序列,而元组是不可修改的,即创建无法修改当前元组

元组无法修改内部元素,如果需要修改,可以转换成List或者直接构建新的元组 元组与列表用法基本类似,大多数工具均可以直接照搬使用

字符串

01_字符串简介

字符串:一系列字符,用单引号或者双引号括起 Python不支持单字符类型,单个字符也被看作为字符串,许多用法与List一致: 访问字符串中的元素:使用方括号+下标(从0开始) 切片:s[starts: end: tep],在字符串s下标为[start,end)中,步长为step len(s):求字符串的长度 +:字符串连接 *:重复字符串 in、no tin:存在、不存在 str(x):把x强制转换成字符串

字符串简介——转义字符 转义字符是以反斜杠()开头的特殊字符,用于表示不能直接键入的字符,例如换行符、制表 符、引号和反斜杠本身 \:续行符,在行尾 \:反斜杠 ':单引号 ":双引号 \n:换行符 \t:横向制表符

字符串简介——ord和chr Python将字符编码成Unicode码:简单理解为所有语言的字符(所有字母、数字、中文等所有符号)一一对应一个数字(编码) 我们常用的一般是ASCI码,包括字母、数字、一些标点符号和控制符号 字符=>Unicode码:ord(x),x为字符,ord(x)为整数 Unicode码=>字符:chr(x),x为整数,chr(x)为字符

02_字符串常用方法——判断类方法

字符串包含很多内建函数,合理使用相关函数可以极大提升效率 下面所有函数,满足条件为True,否则为False isalnum():判断字符串是否都是字母或者数字 isalpha():判断字符串是否都是字母或中文字符 isdigit():判断字符串是否只包含数字 islower():判断字符串是否全小写 isupper():判断字符串是否全大写 isspace():判断字符串是否只包含空白 istitle():判断字符串是否标题化

字符串常用方法——转换类方法 下面所有函数,返回一个在s基础上转换的字符串,s本身不会变 titl():"标题化"的字符串 lower():转换成小写 upper():转换成大写 swapcase():字符串中大写转换为小写,小写转换为大写 lstrip([chars]):截掉字符串左边的空格或指定字符chars rstrip([chars]):截掉字符串右边的空格或指定字符chars strip([chars]):调用lstrip([chars])和rstrip([chars]) replace(old, newl, max]):将字符串中的 old 替换成 new,如果max指定,则替换不超过max次 ljust(width[, fillchar]):左对齐,并使用空格(或者fllchar)填充至指定长度width的新字符串 rjust(width,[, fillchar]):右对齐,并使用空格(或者fllchar)填充至指定长度width的新字符串 zfill (width):右对齐,并使用0填充至指定长度width的新字符串 center(width, fillchar):居中对齐,使用空格或者fillchar填充

字符串常用方法——查找类方法 下面所有函数,返回查找结果 count(str, beg= 0,end=len(string)):求str在字符串中出现次数,如果指定查找范围则在[beg,end)中查找 find(str, beg= 0,end=len(string)):判断st是否在字符串中,如果指定查找范围则在[beg,end)中查找返回找到的起始下标,不存在返回-1 rfind(str, beg-0,end=len(string)):从右往左查找 index(str, beg 0,end=len(string)):与fnd相同,只是如果str不存在,则抛出异常 rindex(str, beg-0,end=len(string)):从右往左查找 startswith(substr, beg 0,end=len(string)):判断是否以substr开头 endswith(suffix, beg-0, end=len(string)):判断是否以suffix结尾

字符串常用方法——字符串和List 字符串转换成list(由于字符串本身是不可修改的,转换成list可以进行修改) 利用split0方法对字符串进行分割: str.split(str="", num=string.count(str)): str表示分割符,默认为空字符,包括空格、换行、制表符等 num--分割次数,如果设置了这个参数,则最多分割成num+1 个子字符串。默认为-1,即分隔所有

一行输入两个整数 split将输入的字符串进行分割 map(function,sequence):把序列sequence里面的每一个元素利用fumction进行转化,最终 结果是一个可迭代的对象,一般需要将其转换成list

字符串常用方法——修改字符串 如何修改字符串? 直接在字符串上修改是不行的,因为字符串不可修改 1、转换成List,修改后再转换成字符串 2、利用切片 3、重新赋值 4、利用replace函数

字典

01_字典

字典存储一系列的键值对:key:value 字典等价于数学中的映射,即一个key对应着一个value 键:key,值:value,通过key来找value,key必须唯一,因此同一个key只能对应着一个value

字典——创建字典 Python中用{表示字典,可以使用台创建一个字典 字典中的key和value之间用冒号:分隔,元素之间用逗号,分隔 字典的key只能为数字、字符串、元组,大多数情况使用字符串作为key value的类型没有限制

利用dict创建字典: a=dict(keyl=value1,key2=value2,key3=value3) 此时key只能是字符串

利用dict创建字典: a=dict([[key1,value1],[key2,value2],[key3,value3]]) 可以传入一个列表或者元组,每个元素也是一个包含两个元素的列表或者元组 则此时可以按照第一个元素作为key,第二个元素作为value

zip(sequence1, sequence2,...) 把多个序列相同下标的元素组装成元组,结果是一个可迭代对象 结果可以转换成list,但是首次转换后迭代器就为空

字典——访问字典 Python的字典通过key来获取value,把key看做下标即可 a[x]: a为dict、x为a中的一个key,必须存在否则会报错

如果实现并不知道x是否在字典的key中,需要查询字典中x对应的value,可以使用get方法 a.get(x,value=None):a表示字典,x表示查询的key,value表示默认值 如果x在字典的key中,则上述的结果为a[x],如果不存在,上述结果为value

02_字典基本操作——添加和修改元素

字典通过直接利用key可以访问对应的value,类似的,添加元素、修改元素也是直接利用key 和value就能进行添加或者更新

字典基本操——删除元素

删除字典中的键值对,可以用Python本身的删除语法del

删除字典中的键值对,也可以用字典的删除方法pop

字典基本操作——遍历字典 与List一样,直接利用for语句就可以遍历字典 for x in a:其中x是循环变量,a是字典,此时遍历的是a的key列表 s={'a':123','b':456','c':789'} for x in s: print(x) 利用a.keys()、a.values()、a.items()可以分别循环遍历key、value、二元组(key,value) s={'a':123,'b':456,'c':789} for x in s.keys(): print(x) for y in s.values(): print(y) for x,y in s.items() print(x, y)

字典基本操作——判断是否存在元素 字典中可以使用in、not in判断某元素是否在字典中 x in a、x in a.keys():判断x是否在a的key中 x in a.values():判断x是否在a的value中 (x,y) in a.items():判断x是否在a的key中,并且对应的value为y

字典基本操作——拷贝字典 与List类似,直接赋值无法进行复制,需要使用copy函数完成复制 直接赋值相当于是“引用”,就是添加一个别名

字典基本操作——合并两个字典 字典利用update方法可以将另一个字典的key-value对更新到已有字典中 a.update(b):把字典b中的每一个元素放入a中更新: 如果b中的key在a中没有,则直接在a中添加一组新的key-value对 如果b中的key在a中有,则直接更新对应的value

集合

01_集合

Python中的集合和数学中的集合概念一样,存储不重复的元素 集合中的元素都是唯一的,互不相同 集合中只能存储不可变的数据:数字、字符串、元组 Python用{}表示集合,其中的元素用逗号分隔 Python集合是无序的

集合——创建集合 创建集合的方式: 1、{元素1,元素2,元素3..}:把大括号中的所有元素构造成一个集合,如果有重复元素,只保留 1个 2、{}:这是空字典,不是空集合 3、set(x):把x转换成集合,x一般为列表、元组等 4、set():空集

集合——遍历集合 与遍历list一样,forxina:,其中a是set,x是循环变量 s={1,2,3,4} for x in s: print(x) print(sum(s),max(s),min(s)) s.clear():清空集合 x in s:判断是否存在 len(s):集合元素个数

02集合基本操作

添加元素 s.add(x):集合s加入元素x s.update(t):集合s中加入t,t是另一个集合或者元素

删除元素 s.remove(x):集合s删除元素x,如果x不存在则报错 s.discard(x):集合s删除元素x,如果x不存在不会报错 s.pop():集合s随机删除一个元素 s.clear():集合s清空

判断类方法 s. isdisjoint(t):判断集合s和集合t是否不相交 s. issubset(t):判断集合s是否为集合t的子集 s.issuperset(t):判断集合s是否为集合t的超集

四、函数

函数定义与使用

math

collections

heapq

functool

itertools

五、类的定义和使用

类的定义和使用

常用库函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值