笔记视频来源——链接: 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——随机数模块
评论区