Python学习笔记
Python笔记整理
常量与变量
变量:记录实物的状态
特征
id:放映内存地址,内存地址不同id则不同
type:记录实物的状态(类型) 不同类型的值记录不同状态
value:值本身
变量名:
变量名应该做到见名知意
命名规范:字母、数字、下划线
命名风格:纯小写+下划线_
例:student_name
常量:不变的量
命名规范:命名以大写字母为常量(规范约定)
运算符:
/ 结果带小数
// 只保留整数
% 取余数
** 次幂
!= 不等于
交叉赋值:
n,m = m,n
解压赋值:
x,y,z=[1,2,3]
数值进制转换:
bin() 转为二进制
oct() 转为八进制
hex() 转为十六进制
int() 转为十进制
基本数据类型
数字类型:整形int、浮点型float
字符串类型:str
" " 、' ' 引号内都是字符串(外层双引号,内层单引号)
\\ 转译为普通字符
\n 换行
\t 制表格
end='' 取消默认换行符,也可换其他结束符
字符串可以相乘
print('hellow' * 10)
列表类型:list(索引对应值/位置/顺序)
可以按位置记录多个值
在[]内用逗号分割
['a','b','c']
字典类型:dict(key对应值/描述对应值)
在{}内用逗号分割 key:value
{'name':'liu','age':18,'gender':'male'}
布尔值:bool
ture 结果为真
false 结果为假
与用户交互
input会将用户输入的所有内容存成字符串
格式化输出:
%s:可以接收任意格式
%d:只能接收int
按照位置与%一一对应输出
'name is %s age is %s'%(liu,18)
按照字典与%一一对应输出
'name is %(name)s age is %(age)s'%{name:liu,age:18}
str.format兼容性好
'name is {name} age is {age}'.format(name=liu,age=18)
f'' 速度快。兼容形差(Python3.5版本后能使用)
f'我的名字是 {name} 我的年龄是 {age}'
可变不可变类型
可变类型: list、dict
不可变类型:int、float、str、boll
成员运算 in(判定元素是否存在)
区分可变不可变类型,不可变类型不动,可变类型产生新的地址
深浅拷贝
浅copy:list1=[]
list3=list1.copy()
值原封不动产生一个新的列表
深copy:import copy
list3=copy.deepcopy(list1)
while循环
break 立刻终止本层循环
while循环嵌套:每一层都必须配一个break
while True:
while True:
while True:
break
break
break
退出while循环的方式:
条件改为False
break
while + continue:结束本次循环,直接进入下一次
while + else(在没有被break打断的情况下运行)
for循环(循环取值/迭代循环)
for 变量名 in 可迭代对象:
for i in range(10):
执行代码
for控制循环次数:
range():顾头不顾尾
range(1,10,1) 1:从1开始 10:10前的一个数为末尾 1:跨步为1
range(len())
for循环嵌套:
外层循环一次,内层循环需要循环完毕才会开始下一次循环
for与while对比
1、相同之处:都是循环,for循环能干的事,while循环都能干
2、不同之处
for循环次数取决于in后值的个数
while循环次数取决于条件何时为假
元组tuple:就是一个不可变的列表(内存地址不可变)
按索引存放多个值,只用于读不用于改
():括号内用逗号分割开多个任意类型的元素
(,):如果元组中只有一个值,必须用逗号分割开
().index(''):按顺序查找索引,找不到报错
().count(''): 统计元素出现的个数
字符串str:
print('123456789'[0:10:2]) # 切片
print("=======a=======".strip("=")) # 去掉两边的=号
print("=======a=======".lstrip("=")) # 去掉左边的=号
print("=======a=======".rstrip("=")) # 去掉右边的=号
print("AaBbCc".lower()) # 全为小写
print("AaBbCc".upper()) # 全为大写
print("AaBbCc".startswith("A")) # 判断首字符
print("AaBbCc".endswith("c")) # 判断末尾字符
print("egon:18:male".split(":", 1)) # 从前往后分割为列表
print("egon:18:male".rsplit(":", 1)) # 从后往前分割为列表
l = ["aaa", "bbb", "ccc"]
print(":".join(l)) # 按照某个分隔符号,把字符串分割成列表
print("a b c d a b c d".replace("a", "A",1)) #更改字符
print("123".isdigit()) # 判断字符串是否为int
print("egon".center(50, '=')) # 居中填充
print("egon".ljust(50, '=')) # 左对齐填充
print("egon".rjust(50, '=')) # 右对齐填充
print("egon".zfill(10))
print("egon".capitalize()) # 首字母大写
print("Egon".swapcase()) # 大小写反转
print("egon age".title()) # 单词首字母大写
print('abc'.islower()) # 判断是否全为小写
print('abc'.isupper()) # 判断是否全为大写
print('abc123'.isalnum()) # 判断是否为字母或数字组合
print('abc'.isalpha()) # 判断是否全为字母
print('abc'.isidentifier()) # 判断名字是否符合规范
列表list:
索引:按位置/顺序存放多个值
可取可改:索引存在则修改对应的值,索引不存在则报错
往列表添加值:
[].append():在列表末尾加上值
[].insert(,):在列表插入值(索引,值)
[].extend([]):在列表末尾加入可迭代的值(字符串,列表)
删除列表中的值:
del l[x]:同用删除方法,只是单纯的删除
[].pop():不指定索引默认删最后一个,会返回删除的值
[].remove():根据元素删除
切片(顾头不顾尾):
[:]切片等同于浅copy
[0:10:1]
需要掌握的操作:
[].count(''): 统计元素出现的个数
[].index(''):按顺序查找索引,找不到报错
[].clear():清空列表元素
[].reverse():将列表反转
[].sort():默认从小到大升序排序
[].sort(reverse=True):设置为从大到小降序
字符串比大小是按照ASCI码表的先后顺序对应位置一次比较
字典dict():
{}默认定义出来的是空字典
{}内用逗号分割开多个key:value,其中value可以是任意类型但key必须是不可变类型且不能重复
dict(a=x,b=x,c=x)
{}.fromkeys(,):快速初始化一个字典
len({}):统计个数
删除:
{}.pop:根据key删除,返回删除的key对应的值
{}.popitem:随机删除
{}.keys():字典中的key单独拿出来
{}.value():字典中的value单独拿出来
{}.item():用元组查看key:value
需要掌握的:
{}.clear():清空
{}.upddate():更新字典
{}.get():按照key取值,不存在则返回None
{}.setedfault():key存在则不添加,不存在就添加,返回valve
集合set():
1.元素为不可变类型
2.集合内元素无序,
3.集合内元素没有重复
取交集:{}&{} {}.intersection()
取并集:{}|{} {}.union()
取差集:{}-{} {}.difference()
取对称差集:{}^{} {}.symmetric_difference()
取父子集:{}>{} {}=={} {}.issubset()
{}.issuperset()
其他方法:
{}.discard():删除
{}.module():删除 报错
{}.update():更新去重
{}.difference_update():取差覆盖
{}.add():单独添加元素
文件
with open(文件路径,mode='rt') as f:
f.read()
r模式:只读
文件不存在报错,文件存在时文件指针跳到开始位置
.read()一次性把所有内容从硬盘读到内存,指针位置读到结尾
r+文件不存在报错 写覆盖
readline:一次读一行
readlines&read:一次读全部,把所有内容读入内存
w模式:只写
文件不存在新建空文档,文件存在时清空文件指针位于开始位置
writelines:写入可迭代多个值
a模式:只追加写
文件不存在新建空文档,文件存在时指针位于末尾位置
b模式:binary
1、读写都是以bytes为单位
2、可以针对所有文件
3、一定不能指定字符编码表
总结:
t模式简洁(针对文本文件)
b模式通用
指针移动:以bytes为单位
特殊情况:t模式下read读的是字符个数
f.seek(n模式):n指的是移动的字节个数
f.seek(9,0)(移动字数,移动模式)
f.seek(*,0)参照物是文件开头位置
f.seek(*,1)参照物是文件当前位置
f.seek(*,2)参照物是文件末尾位置,应该倒着移动
1、2,模式不能在t模式运行
bytes类型:
1.字符串编码后的结果
2.b‘必须是英文’
3.b模式打开文件,f.read()读出的内容

浙公网安备 33010602011771号