1.语句
1.判断语句
1.单IF语句
if 条件:
内容
else:
内容
2.多IF语句
None同False
if 条件:
内容
elif 条件:
内容
......
else:内容
2.循环语句
1.while语句
只要条件为真,就能一直执行
while 条件:
循环体
2.for语句
待处理集(序列类型)可以是字符串,集合,元组等内容
for 临时变量 in 待处理集:
循环体
range(起点(默认为0),终点(不含),步长)
countinue 跳过本次
break 跳出循环
2.函数
1.函数的定义
在Class中定义时叫方法,使用"."调用
局部变量: 函数内的临时变量
全局变量: 函数外的变量
def 函数名(传入参数1,参数2,....):
"""
文档注释 可以通过鼠标悬停函数查看
"""
内容
return 返回值
# 多返回值 # 接受 变量1,变量2=函数
# return 返回值1,返回值2
2.多参数
1.位置参数
def 函数名(name, age, gender):
内容
# 使用
函数('TOM', 20, '男')
2.关键字参数
可以和位置参数混用, 位置参数要在前且匹配位置
def 函数名(name, age, gender):
内容
# 使用
函数(name='TOM', gender= '男', age=20)
函数('TOM', gender= '男', age=20)
3.缺省参数
def 函数名(name, age=20, gender='男'):
内容
# 使用
函数('TOM')
4.不定长参数(元组--位置传递)
传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递
def 函数名(*args):
print(args) # 元组
函数(12, 'aaa', ....)
5.不定长参数(字典--关键字传递)
数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典.
def 函数名(**kwargs):
print(kwargs) #字典
函数(age=12, name='aaa', ....)
3.函数传递
注:是逻辑的传递,而不是数据的传递
定义 | def 函数名(函数) |
---|---|
使用 | 函数(函数名) |
4.匿名函数
可用于传递 函数(匿名函数)
lambda 传入参数:函数体(一行)
3.数据容器
1.列表
1.定义
定义 | 变量=[元素1,元素2.......] |
空列表 | 1.变量=[] 2.变量=list() |
元素类型 | 1.不受限制 2.可以异构,可以嵌套 |
索引 | 1.正向(从0开始),反向(从-1开始) 2.嵌套索引,变量[][] |
遍历 | 1.while 需要先统计元素数 2.for 直接使用in |
2.使用函数
列表.index(元素) | 查找下标 |
列表[下标]=值 | 修改指定位置值 |
列表.insert(下标,元素) | 插入元素(指定位置) |
列表.append(元素) | 追加元素 |
列表.extend(其他数据容器) | 追加多个元素 |
del 列表[] | 删除元素 |
返回值=列表.pop(下标) | 删除元素 |
列表.remove(元素) | 删除匹配的第一个 |
列表.clear() | 清空列表 |
列表.count(元素) | 统计数量 |
2.元组
1.定义
定义 | 变量=(元素1,元素2.....) |
空元组 | 1.变量=() 2.变量=tuple() |
元素类型 | 1.不可修改(嵌套其他数据容器后可改其他) 2.可以异构,可以嵌套 |
遍历 | 1.while 需要先统计元素数 2.for 直接使用in |
2.使用函数
列表.index(元素) | 查找下标 |
列表.count(元素) | 统计某种元素的数量 |
3.集合
1.定义
定义 | 变量={元素1,元素2.....} |
空集合 | 变量=set() |
元素类型 | 不重复,无序(无下标) |
遍历 | for 直接使用in |
2.使用函数
集合.add(元素) | 添加 |
集合.remove(元素) | 移除 |
变量=集合.pop() | 随机取元素,取出后元素消失(因为无序) |
集合.clear() | 清空 |
集合3=集合1.difference(集合2) | 取差集 |
集合1.difference_update(集合2) | 消除差集,改集合1 |
集合3=集合1.union(集合2) | 合并集合 |
4.字典
1.定义
定义 | 变量={key1:value1,key2:value2,......} |
空字典 | 1.字典={} 2.字典=dict{} |
元素类型 | 不重复,无下标 |
嵌套 | key不可为字典,value可为字典 |
获取嵌套 | value=字典[key1][key2] |
遍历 | 1.for 直接使用in 2.for+keys |
2.使用函数
字典[key]=vlaue | 新增,更新 |
字典.pop(key) | 移除 |
字典.clear() | 清空 |
列表=字典.keys() | 获取全部key |
5.字符串(字符的容器)
1.定义
定义 | 变量=' ' | 通过\可以解除引号定义作用 |
拼接 | 变量+变量 | 字符串和字符串才行 |
格式化(占位) | "%d"(变量) | %d int,%s str,%f float |
快速格式化 | f"内容{变量}内容{变量}" | 不关注类型和精度 |
精度控制 | %m.nf | 1 m为宽度 2 .n为精度即小数点后n位 3 四舍五入 |
索引 | 下标[] | 无法修改 |
字符大小 | ASCll码表 | 1. A-Z 65-90 2. a-z 97-122 |
2.使用函数
列表.index(元素) | 查找下标 |
变量=字符串.replace(被替换str,替换str) | 字符串的替换 |
列表=字符串.split(分隔符) | 分割 |
字符串.strip() | 去除前后空格和换行符 |
字符串.strip(字符串) | 去除前后字符串(后是倒叙) |
列表.count(元素) | 统计数量 |
6.通用操作
1.属性
有序 | 字符串,元组,列表 |
无序 | 集合, 字典 |
有序切片 | 序列[起始下标:结束下标(不含):步长] |
2.函数
遍历 | for遍历 |
len() | 元素个数 |
max() | 最大 |
min() | 最小 |
排序 | sorted(容器,reverse=True) T反,F正 |
set(容器) | 转集合 |
tuple(容器) | 转元组 |
str(容器) | 转字符串 |
list(容器) | 转列表 |
4.文件操作
1.文件编码
计算机中有许多可用编码:UTF-8/GBK/Big5等
UTF-8是目前全球通用的编码格式除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。
2.文件的读取
1.打开
对象 = open('路径', '打开方式', encoding="UTF-8")
# 打开方式
# r 只读。文件的指针将会放在文件的开头。这是默认模式。
# w 写入。如果该文件已存在则打开文件,从开头开始编辑原有内容
# 删除。文件不存在创建新文件。
# a 追加。如果该文件已存在,新的内容将会被写入到已有内容之后。
# 文件不存在创建新文件。
2.读取
变量 = 对象.read(num)
# num表示字节,读取数量,默认全部
变量 = 对象.readlines()
# readlines可以按照行的方式把整个文件读取,返回的是一个列表,
# 每一行的数据为一个元素。
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n',
# 'ccc']
变量 = 对象.readline()
# 只读第一行
# for
for line in open("python.txt", "r"):
print(line) # 一行
# 关闭
对象.close()
# 通过在with open的语句块中对文件进行操作
with open("python.txt", "r") as f:
f.readlines()
# 可以在操作完成后自动关闭close文件,避免遗忘掉close方法
3.写入
# 1. 打开文件
f = open('python.txt', 'w') # 注意写入模式w:重写 a:追加
# 2.文件写入
f.write('hello world')
# 3. 内容刷新
f.flush()
# 当调用flush的时候,内容会真正写入文件
# 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)
5.异常
1.异常是什么?
异常: 就是程序运行的过程中出现了错误
bug: 就是指异常的意思,因为历史因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误。
2.异常的捕获方法
1.全部异常
try:
可能发生错误的代码
except:
如果出现异常执行的代码
2.指定异常
except Exception : 全部异常
try: #一般try下方只放一行尝试执行的代码。
print(name)
except NameError as e:
print('name变量名称未定义错误')
print(e) # 捕获异常并输出描述信息
3.捕获多个异常
try:
print(1/0)
except (NameError, ZeroDivisionError):
print('ZeroDivision错误...')
4.else表示的是如果没有异常要执行的代码。
try:
except Exception as e:
else:
print('我是else,是没有异常的时候执行的代码')
5.finally表示的是无论是否异常都要执行的代码
try:
except Exception as e:
else:
finally:
f.close()
3.异常的传递
def f01():
num = 1/0
def f02():
f01()
def main():
try:
f02()
except Excetion as e:
print(e)
main() # main会捕获异常
# 当所有函数都没有捕获异常的时候, 程序就会报错