1.record
容器类型:字典,列表,集合
1.列表:有序的(可以获取下标),可变的(增删改),列表的元素一颗是任何类型的数据
2.列表相关操作:增删改查
3.删除:del,remove:删除指定元素 pop:下标删除
4.列表相关方法:
字典(dict):
1.可变(增删改):唯一的,不可变
2.value:可以是任何类型数据
相关操作:增删改查
字典相关运算:in/not in len()
元祖(tuple):有序,不可变(看成不可变的列表)
差和列表一样
只有一个原色的元祖:(1,)
获取元祖中的原色:x, y=(100,200)
集合(set):无序的,可变,元素是不可变的,支持数学的集合运算:包含,交集,并集,差集和补课
函数:
1.函数的声明(格式和步骤)---声明的时候不会执行函数体
def 函数名(参数列表):
函数的说明文档
函数体
2.函数的调用(格式和调用过程)
函数名()
变量()
列表[下标]()
字典[key]()还是调用函数
3.参数相关:位置参数、关键字参数、参数的默认值、不定长参数
4.返回值:return和None
return作用:结束参数
5.匿名函数:格式
6.递归函数
7.函数作为变量使用:声明函数的时候实质是在声明一个类型滴function的变量
2.文件操作
1.基本过程:打开文件-操作-关闭文件
open(路径,打开方式,encoding=编码方式<文本编码设置>,二进制不能设置编码)
a.路径:相对路径:./相对路径
b.打开方式:r/rb/br----读相关的
w/bw/wb,a-----写相关的
路径不存在的时候,读打开会报错,写的时候打开会自动新建文件
c.设置编码:utf-8
注意:如果是以二进制形式打开文件,不能设置编码方式
3.文件的读和写read()/readline----读
write()---写
4.关闭
5.close()
一、打开文件和关闭文件的简写方式()
with open('./files/0.jpg','rb') as f:
content = f.read()
print(type(content))
with open('./files/new.jpg', 'wb') as ff:
ff.write(content)
3.json文件
json是有特殊格式的一种文本形式,他有自己的语法。
json文件就是后缀是.json的文本文件
1.json格式对应的数据类型及其表现
a.一个json文件中只能存在一个数据,这个数据的类型必须是一下类型中的一个
类型 | 格式 |
---|---|
对象(object) | {"a":10, "b":[1,2]} |
数组(array) | [100, "abc", [1, 2]] |
数字(number) | 100, 3.14 |
字符串(string) | "ac", "hell" |
布尔(): | true/false |
json模块是python中内置的,专门用来处理json数据的一个模块
1.load(json文件对象):以json的格式,获取文件中的内容
2.loads(json格式内容的字符串,编码方式):将json格式的字符串,转换成python对应的数据
with open('./files/josn1.json', 'r', encoding='utf-8')as f:
content = json.load(f)
print(content)
2.python对json数据的支持
json | python |
---|---|
对象 | 字典(dict) |
数组 | 列表(list) |
数字 | 整数(int)浮点数(float) |
布尔(trur/false) | 布尔(True/False) |
1.load(json文件对象):以json的格式,获取文件中的内容
2.loads(json格式内容的字符串,编码方式)json转python
3.dump(需要写入json文件中的python数据,json文件对象)
4.dumps(需要转换成json格式字符串的python数据)
content1 = json.loads('{"a":100, "abc":true}',encoding = 'utf-8')
print(content1)
with open('./files/new.json', 'w', encoding = 'utf-8') as f
json.dump({"a":100,"b":102}, f)
注意:python中集合不能转换成json数据
练习:用json文件来保存一个班级信息,包括班级名和班上所有学生(名字年龄好电话)
输入学生信息添加学生
根据姓名删除学生
做到数据持久化
基本框架
{
"class_name": "班级名"
"all_student":[
{"name":名字1, "age":年龄, "tel":"123"},
{"name":名字2, "age":年龄, "tel":"123"},
{"name":名字3, "age":年龄, "tel":"123"},
]
}
1.读出保存班级信息对应的json文件的内容
with open('./files/class_info.json', 'r', encoding='utf-8') as f:
class_content=json.load(f)
print(class_content)
2.输入信息添加数据
name = input('姓名')
age = input('年龄:')
tel = input('电话:')
stu = {"name":name, "age":int(age), "tel":tel}
class_content["all_student"].append{stu}
with open('./files/class_info.json', 'w', encoding='utf-8') as f:
json.dump(class_content,f)
4.异常捕获
1.为什么要使用异常捕获
程序出现某种异常,但是不想因为异常而让程序崩溃,这时候就可以使用异常捕获机制
2.怎么不糊异常
形式1:捕获try代码块所有异常
try:
需要捕获异常的代码块(可能会出现异常的代码块),出现异常直接捕获except
except:
出现异常后执行代码
执行过程:执行try后面的代码块,一旦遇到异常,就马上执行except后面的代码块,执行完后在执行其他语句
形式2
try:
需要捕获异常的代码块(可能会出现异常的代码块)出现异常直接执行except
except 错误类型:
出现异常后执行代码
执行过程:执行try后面的代码块,一旦遇到指定异常,就马上执行except后面的代码块
执行完后再执行其他的语句。
如果try里面的代码块没有出现指定异常,就不执行except后面的代码块,而是直接执行其他语句
形式3:
try:
需要捕获异常的代码块(可能会出现异常的代码块)出现异常直接执行except
except (错误类型1,错误类型2,错误类型3):
出现异常后执行代码
形式4
try:
需要捕获异常的代码块(可能会出现异常的代码块)
except 错误类型1:
执行语句块1
except 错误类型2:
执行语句块2
形式5
try:
需要捕获异常的代码块(可能会出现异常的代码块)
except :
pass
finally:
不管有没有捕获到异常,都会执行(就算崩溃了也会执行)。
1.什么情况
a.输入两个数,然后求两个数的商是多少14
num1 = float(input('除数:'))
num2 = float(input('被除数:'))
print('%f / %f = %f'% (num1,num2, num1/num2))
b.打开一个不存在的文件,不希望程序崩溃,只是让读出的内容是空
2.异常捕获
a = [1, 2, 3, 4, 5]
try:
print(int('abcd'))
print(a[6])
except:
print('捕获到异常')
print('============')
try:
print(a[6])
except (IndexError, KeyError):#(多个捕获)
print('下标越界')
try:
print('abc')
except:
print('出现异常')
finally:
print('最后的语句')
num = input('请输入一个奇数:')
if int(num) % 2 == 0:
raise ValueError