笔记视频来源——链接: link
由本人整理了一部分,记得比较仓促,若有错误,欢迎纠正,不说了,备考期末去啦。(•́︿•̀)
- 在python中,不需要先在前面定义数据的类型,在下面直接就可以使用
- 先定义后调用
- 变量是用于在内存中存放程序数据的容器
- 定义变量名字的时候,不能以数字开头,必需是字符串,或者字符只有是下划线可以,有空格也不行,只能连起来,大小写可以
- 删除变量类似于linux删除,例如 del name
- id()查询在内存中的编号
- 数据类型(对各种数据进行明确的划分):整数,浮点,字符串,布尔,列表,元组,字典,集合
- 定义数字类型不用加引号,加了引号就变成了字符串
- 浮点型——就是小数
- 字符串——加了引号的就是,单 双 三引号
- 多行字符串用多引号
- str——字符串,type()显示变量的类型
- xxx.upper返回xxx的大写,lower,
- name.center(50,"-")用---填充,把Name的东西放到中间
- 字符串的拼接——两个字符串用+可以连接在一起,*几就是多次打印,字符串只能跟字符串拼接,两边都得是字符串
- 布尔类型——ture false,真假,主要用来做逻辑判断,返回ture or false,
- 列表——就是一个大的字符串,但是不完全一样,例如在一个变量中存了几个人名,我想把其中的一个给拿出来,例如:name1,name2这样比较麻烦,容易轮换,需求——用一个变量将各个人名都存下来,存下来之后来得容易取出来,列表就是干这个的,
- 列表详解——name = [“sb”,“sb2”] 中括号,sb就是这个列表里面的一个元素,里面可以用单引号也可以用双引号,并且用逗号隔开
- 列表如何取?——通过下标——索引——索引下标从左到右从0开始
- inster——插入,name.inster(4,"sb")在第四个的前面插入sb
- 元素的添加有两种方式,插入inster,追加append,插入可以将一个元素插入一个列表的任意位置,追加就是将元素添加到列表的尾部。
- 删除元素类似于删除变量,del name[0]指定删除的位置,
- del是全局通用的删除方式
- remove是列表独有的删除方式,names.remove("sb"),删除列表中的sb,从左边开始寻找,删掉碰到的第一个sb,若在这个列表里面有多个sb,只会删除碰到的第一个sb,若找不到就会报错。
- 判断元素是否在这个列表中,“你要找的元素名称” in 该列表的名字, 有ture,无false.
- 常用运算符
- 算数运算符,重点:**2——该数的2次方,%求模——返回除法的余数,//——返回除法的整数部分,/——除
- 比较运算符,大于等于小于等于,单个等号是变量赋值,双等号是判断是否相等,!=不等于,>= ,<=,
- 赋值运算符,注意:自加,a += 1——a = a +1
- 逻辑运算符
- and允许把两个条件放在一起,两边都成立结果才会返回真ture(这个结果为真并且右边的结果也为真)
- or,式子中只有一个判断条件为真,结果就返回真,a >3 or b <3
- or和and连用,按情况而定,怎么放的,从左到右,依次运算,其中,or的优先级更高
- not——取反,结果 取反,例如:在本来结果可以返回ture的式子之前,加入一个not,现在式子返回的结果就是false
- 成员运算,(not 和 not in)判断一个元素在不在指定的序列之中,如果在,就返回ture,如果不在则返回,false,不能做数字的判断
- 读取用户输入,input("这里可以写你给用户的提示"),将用户输入的给存下来,username = input(“你叫什么”)
- 容易出错,n1 = input("Num1"),n2 = input("Num2"),print(n1n2),这样是打印不出来的,因为这里的n1和n2都是字符串,字符串是无法相乘的,这里 引出,input所输入的值都是字符串,无论你输入的是什么东西,这里要做一个事情,把你的字符串变成int,print(int (n1) *int (n2)),——相互转换,必须是长得像,从外面看不出来的那一种
- 格式化打印——打印好看的个人信息卡,拼在一起,{name}在程序内部引用变量,还得在整个字符串外面加入一个f,告诉解释器调用,python3的新特性
- 流程控制。单分支,双分支,缩进,多分支,几乎在所有语言中,流程控制的语法都是高度一致的
- 单分支——只有一条路(没有else),if(这里写条件公式):下面的子代码缩进
- 双分支——两条路,if,else,第一条路走不通了,就走第二条路,要不然走这个,要不然走那个,
- tab键= 四个空格,字代码必需要进行缩进,让你知道你每段代码依赖哪个条件,缩进——让你的解释器区分你的代码层级,同一级别的代码缩进必需一致,官方建议缩进为一个Tap键——四个空格
- 多分支——多条路,设置多个条件,满足哪个条件就走哪条路,elif(else if 的的简写),上面的条件不满足才会判断这个,依次往下推,如果上面的都不满足就走下面的else,
注意这里面的int,复习上面所说的,从input中所输入的东西都是字符串,前面加入int将你所输入的字符串类型的数字转化为整数类型的。
- 最后结尾的else并不是必需的,一般我们会加上一个else.
- 如果只有分支的话,程序只能运行一次,一次结束之后我们就得重新启动程序,从这里就引入循环,
- for循环的语法,for a in range(10),a是临时变量,range(10)是一个从0到10的区间,也就是说,这里循环从0打印到10,每次循环i被赋的值都会变, 这里从0到10的区间,包括0,但是不包括10.或者这样书写 for i in range(5,10)
- 上面的range(10)就相当于一个列表,(用list(range(10) )展示出它是一个列表
- 例题:直接再上面的猜年龄例题上面加入.for i in range(3)只能猜三次。优化:把定义年龄的那个代码写到循环的外面,减少cpu计算的次数,把最后else中的print改成exit,可以实现猜对了就退出程序的效果
- f"{i}"把i的数调过来
- 循环套循环
- break,continue
- break结束当前循环,直接退出程勋
- continue结束当前循环,进入下一次循环
- while循环(又名死循环),循环次数是可以不定的,只条件满足就可以永远循环下去。
- 程序的死循环很好破,但人生的死循环往往很难破
- while 条件 #当条件为真的时候,条件就会一直进行
这是一个死循环
- while版猜年龄
- end = ""不换行
在小循环内不换行
- random——可以产生指定范围内的随机数,字符串等相当于从工具箱中拿出工具。import——导入,
- string模块
- 数据类型,又见str(字符串),字符串是一个有序的字符的集合,用于在计算机中存储和表示文本信息,跟列表相似,同样有下标和索引,
- 可进行切片操作——列表的一个特性,字符村也具备这个功能
- 很多种切法
- s[3:6]顾头不顾尾,下标为3 的会切进来,下标为6的不包括
- 字符串是不可变的,与列表不同,字符串不行,定义好了就无法更改了。
- count插字符串中某个字符出现了多少次
- 字符查找返回-1代表没找到,如果知道了,就返回字符所在的字符串的索引
- l = ["列表" ] print("连接符".join(列表))
- a .replace("l","m",1)
- strip脱掉字符串两边的空格换行...
- split——分隔符
- 数据类型——又见列表,列表是有序的。可变的数据类型,可以增删改查
- extend合并列表
- inster可以直接嵌套列表
- 删除方法del,和pop删除,pop删除默认删除最后一个元素,并且返回被删除的数值。指定索引
- remove删除,指定元素名,从左边开始找到第一个
- clear清空,
- 查找操作符name.index("要查找的东西"),返回索引值,(建议先item in list看一看该元素在不在列表里面,然后再进行下标索引)
- 切片——像切面包一样,一下子在元素中取出多个值name[开始从哪里切:切到哪里结束],顾头不顾尾。开始的包括,结尾的不包括,开始是0的话,可以省略。从后面往前面切,省略结束的直接切到最后,并且包括最后一个值
- 倒着切的切法,依然要按着从走到右的顺序,只是索引是是负的,从后面往前数索引值从-1开始
- 步长(跳着切)——
names[0:1:这写步长]步长默认是1,2是隔一个选一个
names[0::2]前面的0::相当于把整个列表包含了
- 排序和反转
- 排序 list.sort()默认是abcd。。。排序,小大写英文中文顺序(这里解释需要讲字符编码)
- list.reverse()反转列表
- 循环列表(就跟for循环一样(range就相当于一个列表)),
- 打印索引enumerate(list)——枚举
- 这里提一句()——小括号类型是元组,他与列表一样,只不过不能改
- 字典,引子:将每个人的数据全部存到一起,可以用列表方式存放起来,但是不容易查询,比较麻烦,而且比较吃系统的性能,列表的局限性就体现出来了,
- dict定义{key1:value1,key2:value2}
通过索引(不是列表里面的索引),在Python里面字典的索引叫做Key,通过key查到对应的value, key为索引,value为实实在在的数值。
- 字典特性:key-value结构,key(value中可以有数列)必须为不可变数据类型(字符串,数字),必需唯一,可存放任意多个value,可修改,可以不唯一,无序,查询速度快,且不受Dict的影响(学完hash再解释为什么快)
- 例如:dic = {"sb":[32.4000.ceo],"sb2":[33,5000,执行官 ]}
- 字典的好处:可以存贮复杂的信息,可以快速的查询
- 从字典中取值print(dict["sb"])这样就会将sb后面的value打印出来(value存储这sb的信息)
- key没有顺序,不像列表中的索引(从左到右从0开始)一样有顺序 +——+{补充:字典默认是无序的,但也变成有顺序的}
- 列表的操作——增删改查——循环嵌套
- 增加——直接dict(字典的名字)["key"] = “内容”,如果给同一个key重复添加value,前面输入的就会后面所输入的替换
- 字典删除del,pop,clear(清空)
- 查找操作,”sb” in dict查询是否存在(查询key),value无法直接查询到
- 字典只能一个一个的取,没法用切片方式取
- 字典.keys()返回你这个字典所有的key
- 字典.items(),把你这个字典变成一个大的列表
- 一对Key和value是转化出列表中的一个小列表。
- keys和.items都可以用for循环打印出来
- Print(k,v)可以分别的打印出来这两个变量
- 直接循环这个字典for k in dict:print(k,dic[k])把k和value一起取出来——推荐用这种,效率速度快
- 求长度:求出有几组kv len(字典)——全局函数,可以查询列表,字符串,字典
- 嵌套:字典[“里面那个字典”] = {里面这个字典的内容},往外面取的话就取两层
- 字节类型就是二进制格式,只不过为了易于理解和人类肉眼的计算,使用16进制表示而已
- 文件操作
- 文件操作流程——f = open(文件名称)
- f.write( ) read读操作 close保存并关闭
- f = open(“文件名称”,mode = “w”)
- 换行符\n
- Mode默认模式是r
- Read是读整个文件
- Readline读一行
- 模式a,追加在尾部
- 循环文件——文件的遍历
for line in f
line = line.split()——把每一行分成一个小列表
- 注意类型的转换
- 二进制模式操作文件(题比较少),encoding= None——告诉你的解释器当前要打开的文件是什么编码,如果none,则用解释器默认编码,ntf-8
- none——什么也没有
- 编码不相符——无法解码
- 任何东西底层都是01010,二进制构成,
- 如何用二进制模式打开,mode操作符,后面加一个b,rb,wb
- python操作文件的其他功能
- 刚打开文件是有一个光标在开头闪烁的,只是我们看不见
- seek——用来移动光标,占几个字节
- 函数编程
- 函数特点——减少重复代码,使程序变得可扩展,使程序变得易维护
- 函数的定义——一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用他的函数名就可以了
- 函数语法定义——def 函数名(参数)下面写要执行的内容
136.
- 函数的各种参数
- 个人理解——定义函数的时候写的是形参,调用函数的时候写的是实参
- 形参就是占位符,先站一个位置,等待后面有实际的数值来传进来,形参的存货周期比较短暂,随着函数的结束而消失
- 实参就是实际的值,形参与实参一一对应
- 默认参数———一定要放到最后面
上面代码中的country的默认值就是CN
当然也可以给默认参数指定值
这样写的话,解释器就蒙圈了,不知道对应的是哪个参数,少了个参数就报错。所以——————默认参数要放到最后面。
上面的这个叫做位置参数,位置一一对应
- 关键参数(指定参数)
在调用的时候把参数名加上,就叫做指定参数,加上了参数名,就不用按照顺序了,通过名字可以找到,就不用依赖位置了。
注意——关键参数必需放到位置参数后面
- 同上——位置参数的优先级>关键参数(指定参数)
- 不允许多次赋值
- 非固定参数——若你的函数在定义的时候不确定用户想传入多少个参数,就可以使用非固定参数
会把多传人的参数变成一个元组形式
传入的参数变成一个字典形式
- 函数返回值可以干什么——函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句把结果返回
- 返回值有很多选择,多个返回值的时候,以元组的形式
- 如果在函数中未在函数中指定return,那这个函数的返回值为none
- 局部变量与全局变量
154.
- 上面的两个name不是一个东西,上面是全局变量,里面是局部变量
- 变量的查找顺序是局部变量大于局部变量
- 在函数里面是不能直接修改全局变量
- global name声明一个全局变量,在函数内部,但是不建议使用,会是你的程序变得复杂
- 往函数里面传字典,列表产生的现象
- 内置函数
- abs——取绝对值
- all(要求全部为true)——检验一个列表里面的所有数值,如果都是true,这个all就返回true,有一个不是true,就会返回false(例子:现在疫情期间的登记检测,只要有一个人的核酸检测不合格,就会返回false,人们就会被隔离)
- bool——布尔值的判断,是否为真,是否为假(只要非0都是ture,0是false)
- any——类似于all,区别是any有一个是true就行
- chr——打印数字对应的ascii码值
- dict——生成一个空字典
- dir——打印当前程序在内存中的所有变量
- list——生成一个空列表
- locals——打印当前程序(作用域内)在内存中的变量名 and 变量值
- map——把一个列表里面的所有元素调用给函数使用,一次只能扔一个参数,所以那个函数只能定义一个参数
172.
- max——求一个列表里面的最大值
- min——求一个列表里面的最小值
- sum——求和
- open——文件操作
- ord——传一个ascii字符进去,把他对应的值给他打印出来
- enumerate——放一个列表,将列表中的索引和他对应的值以元组的形式打印出来
- round——保留几位小数。round(3.1245.2)
- str——把数字列表等标变成字符串
- type——看数据的类型
- 一切皆对象——一切都是面向对象
- zip——将两个列表配对
- filter——将一个列表里面的每一个值交给compare来运算,返回为真的保留,假的不要
- 模块——就是一个个的python文件
- 使用模块有什么好处——提高了代码的可维护性,避免函数名和变量名冲突
- 模块的分类:内置标准模块(标准库)会随着解释器安装-第三方开源模块-自定义模块
- 导入import
- os模块——与操作系统进行交互的一个模块
- 自定义模块—
- 随便写一个文件就能是一个模块
- 第三方开源模块——
- 包的使用——一个包其实就是一个文件夹
- os模块
- sys.path——获取系统环境变量
- sys.argv—— 获取脚本参数
- random——随机数模块