01-容器类型
字典、列表、元组和集合
- 列表:
1.列表(list):有序(可以通过下标获取元素)、可变(增删改)、列表中的元素可以是任何类型的数据
2.列表相关的操作:增删改查
3.列表相关的运算:+、*、in、not in、len()
4.相关方法 - 字典
1.字典(dict):可变(增删改)、key:唯一的、不可变的;value:可以是任何类型的数据
2.字典相关的操作:增删改查·
3.字典相关的运算:in/not in,len()
4.字典相关的方法 - 元组
1.元组(tuple):有序,不可变、元素可以是任何类型的数据
2.查和列表一样
3.只有一个元素的元组:(1,)
4.获取元组中的元素:x,y = (100,200);x,y = 100,200 - 集合
1.集合(set):无序、可变、元素是不可变的
2.支持数学的集合运算:包含(>=,<=)、交集(&)、并集(|)、差集(-)和补集(^) - 函数
1.函数的声明(格式和步骤)----声明的时候不会执行函数体
def 函数名(参数列表):
—函数的说明文档
——函数体
2.函数的调用(格式和调用过程)
函数名()
变量()
列表[下标]()
字典[key]()
3.参数相关:位置参数、关键字参数、参数的默认值、不定长参数
4.返回值:return和None、return的作用
5.匿名函数:格式
6.递归函数(了解)
7.函数作为变量使用:声明函数的时候实质是在声明一个类型是function的变量
02-文件操作
1.基本过程:打开文件--操作--关闭文件
2.open(路径,打开方式,encoding=编码方式)
a.路径:绝对路径(了解),./相对路径,
b.打开方式:r,rb/br -- 读,w,bw/wb, a --写
注意:路径步存在的时候。读的形式打开会报错;写的形式打开会自动新建文件
c.设置编码:utf-8,gbk
注意:如果是以二进制的形式打开文件(rb/br,wr/rw),不能设置编码
3.文件的读和写
read()/reanline() --读
write()--写
4.关闭
f.close() --- 习惯
- 打开文件和关闭文件的简写方式(常用的方式)
with open() as 文件变量名
——文件操作
文件打开操作后,会自动关闭
if __name__ == '__main__':
# 读二进制(上传文件)
with open('./filess/8.jpg','rb') as f:
# bytes是Python中内置的数据类型,用来表示二进制数据
content = f.read()
print(type(content))
print(content)
# 将二进制数据写入文件(下载图片)
with open('./filess/r.jpg','wb') as ff:
ff.write(content)
03-json文件
json是有特定格式的一种文本形式,它有自己的语法
json文件就是后缀是.json的文本
1.json格式应的数据类型及其表现
a.一个json文件中只能存一个数据,这个数据的类型必须是以下类型中的一个
对象类型,数组,数字,字符串,布尔,null
类型: 格式 意义
对象(object): {"a":10,"b":[1,2]} 相当于字典
数组(array) [100,"a10bc"true,[1,2]] 相当于列表,里面的元素可以是任何类型
数字(number) 0,100,30,3.14,-100 包含整数和小数1
字符串(string) "abc","hello jason"
布尔: true/false 是(真)/否(假)
null: null 空值
'''
2.Python对json数据的支持
json---python
对象 字典(dict)
数组 列表list)
数字 整数(int)和浮点数(float)
布尔/true,false 布尔(bool)/True,False
null None
json 模块是Python中,内置的,专门用来处理json的数据文件
1.load(json文件对象):以json的格式,获取文件中的内容。将文件内容转换成相应的Python数据
2.loads(json格式内容的字符串),编码方式):将json格式的字符串,转换成Python对应数据
3.dump(需要写入json文件中的Python数据,json文件对象)
4.dumps(需要转换成json格式字符串的Python数据)
import json
if __name__ == '__main__':
# 1.josn转python数据
with open('./filess/json1.json','r',encoding = 'utf-8') as f:
content = json.load(f)
print(content)
print(type(content))
content1 = json.loads('"abc"', encoding='utf-8')
print(content1,type(content1))
python ---> json
字典 对象
列表、元组 数组
整数/浮点数 数字
布尔/True,False true,false
字符串 字符串(双引号)
None null
with open('./filess/new.json','w',encoding='utf-8') as f:
json.dump({'a':100,'h':200},f)
# json.dump([1,2,3,'abc'],f)
# json.dump((1,2,'abc',100,True),f)
# 注意:Python中的集合不能转换成json数据
# json.dump({11,22,'aa'},f)
- 练习,用json文件来保存一个班的班级信息,包括班级名和班上的所有的学生(名字、年龄和电话)
输入学生信息,添加学生
根据姓名删除学生
(做到数据持久化)
json文件的数据格式
{
"class_name":"班级名"
"all_students":[
{"name":"名字","age":"年龄","tel":"电话"},
{"name":"名字","age":"年龄","tel":"电话"},
{"name":"名字","age":"年龄","tel":"电话"}
]
}
'''
# 1.读出保存班级信息对应的json文件中的内容
with open('./filess/class_info.json','r',encoding='utf-8') as f:
class_content = json.load(f)
print(class_content)
# 输入添加信息
name = input('请输入姓名:')
age = input('请输入年龄:')
tel = input('请输入电话:')
stu = {"name":name,"age":int(age),"tel":tel}
class_content['all_student'].append(stu)
'''
class_info = {
'class_name': 'python1806',
'all_student':[
stu
]
}
'''
# 将最新的数据写入文件中
with open('./filess/class_info.json','w',encoding='utf-8') as f:
json.dump(class_content,f)
'''
数据的持久化:
1.将数据从文件中读出来
2.修改数据(增、删、改)
3.将新的数据在写入文件中
'''
04-异常捕获
1.为什么要使用异常捕获
异常:程序崩溃了,报错了
程序出现异常,但不想因为这个异常而让这个程序崩溃,这个时候就可以使用异常捕获机制
2.怎么捕获异常
形式1:捕获try后代码块里面所有的异常
try:
——需要捕获异常的代码块(可能会出现异常的代码块)
except:
——出现异常后执行的代码块
执行过程:执行try后面的代码块,一旦遇到异常,就马上执行except后面的代码块,执行完后再执行其他语句
如果try里面的代码块没有异常,就不执行except后面的代码块,而是直接执行其他语句
b.形式2:
try:
——需要捕获异常的代码块(可能会出现异常的代码块)
except 错误类型:
——出现异常后执行的代码块
执行过程:执行try后面的代码块,一旦遇到指定的错误类型的异常,就马上执行except后面的代码块,执行完后再执行其他语句
如果try里面的代码块没有遇到指定的异常,就不执行except后面的代码块,而是直接执行其他语句
c.形式3
try:
——需要捕获异常的代码块(可能会出现异常的代码块)
except (错误类型1,错误类型2.....):
——出现异常后执行的代码块
d.形式4
try:
——需要捕获异常的代码块(可能会出现异常的代码块)
except 错误类型1:
——执行语句1
except 错误类型2:
——执行语句2
e.形式5
try:
——需要捕获异常的代码块(可能会出现异常的代码块)
(在这而做程序异常退出的善后,一般做保存数据和进度的工作)
except:
——出现异常后执行的代码块
finally:
——不管有没有异常,都会执行(就算崩溃了,也会执行)
if __name__ == '__main__':
# 1.什么情况时使用
# a.输入两个数,让后求这两个数的商是多少
# num1 = float(input('除数:'))
# num2 = float(input('被除数:'))
# print('%f /%f = %f' % (num1,num2,num1/num2))
try:
num1 = float(input('除数:'))
num2 = float(input('被除数:'))
print('%f /%f = %f' % (num1, num2, num1 / num2))
except :
print('输入错误,请重新输入')
# b.打开一个不存在的文件,不希望程序崩溃,只是让读出的内容为空
import json
# with open('./files/info.json','r',encoding= 'utf-8') as f:
# content = json.load(f)
try:
with open('./files/info.json', 'r', encoding='utf-8') as f:
content = json.load(f)
except FileNotFoundError:
print('文件不存在')
# 2.捕获异常
# a = [1,2,3,4,5]
# try:
# print(a[6])
# except:
# print('捕获到异常')
# print('==========')
#
# dict1 = {'a':1,'b':2}
# try:
# dict1['c']
# print(a[6])
# except IndexError:
# print('下标越界')
# except KeyError:
# print('key错误')
# 3.抛出异常(后面补充)
num = input('请输入一个奇数:')
if int(num) % 2 == 0:
raise ValueError
网友评论