千锋教育python2104期总结day15
千锋教育python2104期总结
第十四次总结: json和异常
目录
- 文件操作补充
- json数据
- 异常模块
- 作业
正文
1.文件操作补充
- 打开不存在的文件
“”"
如果以读的方式打开不存在的文件会报错;
如果以写的方式打开不存在的文件不会报错;
“”"
open('test.txt', 'r') # FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
open('test.txt', 'w')
f = open('test.txt', 'a+')
f.read()
f.write('abc')
2.读写模式:+
使用方式:r+ / w+ / a+ - 读写操作
3.通过文件上下文打开文件
“”"
文件对象 = open()
文件对象.read()/文件对象.write()
文件对象.close()
with open() as 文件对象:
文件对象.read()/文件对象.write()
“”"
with open('test.txt', 'w') as f:f.write('abc')f.write('123')
2. json数据
1.什么是json
json是一种通用的数据格式。
- json是一种什么样的数据格式(通用)
“”"
一个json有且只有一个数据;唯一的这个数据必须是json支持的类型的数据。
json支持的类型:
数字 - 包含所有的整数和小数,表示的时候直接写,例如:900, -12, 0.34, 3e4
字符串 - 用双引号引起来的数据(支持转义字符),例如:“abc”, “试试234”, “abc\n123”
布尔 - 只有true和false两个值,表示的时候直接写:true, false
空值 - null, 表示的时候直接写:null
数组 - 相当于Python中的列表,[元素1, 元素2,…], 例如:[100, 200, “abc”, “abc\n123”, false, [1, 2, 3]]
字典 - 相当于Python中的字典, 但是键只能是字符串,例如:{“name”: “小明”, “age”: 18}
“”"
- python数据和json数据之间的相互转换
“”"
python提供一个json模块,这个模块中有两个函数专门用来支持json和python的相互转换
- json转python (loads函数)
json --> python
数字 int/float
字符串 str,可能会将双引号变成单引号
布尔值 bool, true -> True; false -> False
空值 null -> None
数组 list
字典 dict
loads(json格式的字符串) - 将json格式的字符串转换成对应的python数据
json格式的字符串: 字符串的内容是一个合法的json数据(去掉字符串外面的引号,剩下的部分是一个合法的json数据)
注:loads里面不能直接加’变量’,可以将满足json数据要求的数据转为str格式,再直接放入loads
例:
q=[true]
print(json.loads('q'))#报错
w=str(q)
print(json.loads(w))#[True]
- python转json(dumps函数)
python —> json
int/float 数字
str 字符串;单引号会变成双引号
bool True -> true; False -> false
list/tuple 数组
dict 字典; 键会转换成字符串
None null
dumps(python数据) - 将python数据转换对应的json格式的字符串
“”"
import json
result = json.loads('"abc"')
print(result) # 'abc'a=[120, "abc"]
result = json.loads(r'a')
print(result, type(result)) # [120, 'abc', True, None] <class 'list'>result = json.dumps([100, 'abc', True, None])
print(result, type(result)) # [100, "abc", true, null] <class 'str'>
3.异常捕获
- 异常
“”"
程序报错就叫程序异常
如果程序出现异常会终止程序的执行。
“”" - 捕获异常
“”"
异常捕获就是让程序中指定的代码段在出现异常后不终止程序的执行,让程序接着执行。
什么时候需要捕获异常:明知道某个位置可能会出现异常,但是不是因为代码不符合语法造成,而是使用者使用不当造成,
但是又不希望这个地方出现异常的时候终止程序的执行。
“”"
3. 怎么捕获
“”"
结构一:捕获任意异常
try:
需要捕获异常的代码
except:
捕获到异常后会执行的代码
finally:
代码段(写遗书)
结构二:捕获指定类型的异常
try:
需要捕获异常的代码
except 异常类型:
捕获到异常后会执行的代码
finally:
代码段
结构三:同时捕获多种异常
try:
需要捕获异常的代码
except (异常类型1, 异常类型2,…):
捕获到异常后会执行的代码
finally:
代码段
结构四:同时捕获多种异常
try:
需要捕获异常的代码
except 异常类型1:
处理方法1
except 异常类型2:
处理方法2
…
finally:
代码段
“”"
4. finally
finally后面的代码不管前面是否出现异常,也不管异常是否被捕获都会执行
5.抛出异常 - 主动让程序崩溃
raise 异常类型
class AgeError(Exception):def __str__(self):return '年龄值错误,年龄的有效范围是1 ~ 200'age = int(input('请输入年龄:'))
if age <= 0 or age > 200:raise AgeError# print('--------')
# raise KeyError
# print('++++++++')
4.作业
#学生管理系统
登录系统完成, 学生管理暂时只写完添加学生功能
import json# ===登录系统===
def xiton():while True:a=zhuye()if a==1:#登录denglu()elif a==2:#注册zhuche()elif a==3:#退出breakelse:print('操作输入错误,请重试\n')continue# 登录系统_主页
def zhuye():wel = print('========欢迎来到XX管理系统==========\n')print('*1.登录\n*2.注册\n*3.退出\n')try:chaozhuo = int(input('请选择操作:'))except:print('操作输入错误,请重试\n')returnreturn chaozhuo
# 登录系统_账号输入
def shuru_zanghao():a = input('请输入账号:')b = input('请输入密码:')return a, b# 创建保存账号的文件
def kon():try:q = open('t1.json', 'r')q.close()except:q = open('t1.json', 'w')we = json.dumps(['学生管理系统',{}])q.write(we)q.close()return# 登录系统_登录功能
def denglu():a,b=shuru_zanghao()kon()q = open('t1.json', 'r')try:e = json.loads(str(q.read()))q.close()if a in e[1]:if b == e[1][a]['密码']:print('登录成功\n')stuxiton(a,e)else:print('密码错误,请重试\n')else:print('账号未注册\n')except:print('账号未注册\n')
# 登录系统_注册功能
def zhuche():kon()a,b=shuru_zanghao()q=open('t1.json', 'r')try:e = json.loads(str(q.read()))q.close()if a in e[1]:print('该账号已被注册\n')else:q=open('t1.json','w')e[1][a]={'密码':b}q.write(json.dumps(e))q.close()print('注册成功!\n')except:print('该账号已被注册\n')# ==学生管理系统==
def stuxiton(a,e):while True:xuanzhe=stuxiton_zhuye(a)
# 1.添加学生\n 2.查看学生\n 3.修改学生信息\n 4.删除学生\n 5.返回'if xuanzhe==1:#添加学生stuxiton_tianjia(a,e)elif xuanzhe==2:#查看学生passelif xuanzhe==3:#修改学生信息passelif xuanzhe==4:#删除学生passelif xuanzhe==5:breakelse:print('错误操作选择,请输入1~5的数字')continue
# 学生管理系统_主页
def stuxiton_zhuye(a):print(f'========欢迎{a}使用学生管理系统========')print(' 1.添加学生\n 2.查看学生\n 3.修改学生信息\n 4.删除学生\n 5.返回')print('========================')a=int(input('请选择:'))print('========================')return a
# 学生管理系统_添加学生
def stuxiton_tianjia(a,e):学号 = input('请输入学号:')姓名 = input('请输入姓名:')年龄 = input('请输入年龄:')电话 = input('请输入电话:')q=open('t1.json','r')w=json.loads(str(q.read()))if 学号==w[2][a]['student_num']:print('该学号已存在,添加失败')elif 姓名==w[2][a]['name']:print('该姓名已存在,添加失败')else:stu_dict1 = {'student_num': 学号, 'name': 姓名, 'age': 年龄, 'tel': 电话}e[1][a]['stu']=stu_dict1q=open('t1.json','w')q.write(json.dumps(e))q.close()print('添加成功')if __name__ == '__main__':xiton()
千锋教育python2104期总结day15相关推荐
- 千锋教育python2104期总结day2
千锋教育python2104期总结day2 第一次总结: 基础语法和变量 目录 更改基础设置, 写出第一句代码 基础语法 输入和输出函数 变量 正文 1. 更改基础设置,写出第一句代码 1)设置pyc ...
- 千锋教育python2104期总结day14
千锋教育python2104期总结 第十三次总结: 常用系统模块和文件操作 目录 time模块 datetime模块 hashlib模块 文件操作 读写操作 数据存储操作 作业 正文 1.time模块 ...
- 千锋教育python2104期总结day5
千锋教育python2104期总结 第四次总结: 循环练习和语法 目录 1.复习 2.认识列表 3.添加元素 4.第一周作业(零基础) 5.周末作业-循环练习题 正文 1. 复习 for循环 for ...
- 千锋教育python2104期总结day11
千锋教育python2104期总结 第十次总结: 函数基础 目录 定义函数 调用函数 函数的参数 函数的返回值 作业 正文 1.定义函数 认识函数 1)什么是函数:函数就是实现某一特定功能的代码的封装 ...
- 千锋教育python2104期总结day20
千锋教育python2104期总结 第十九次总结: 自动化办公2 目录 excel文件的读操作 excel文件的写操作 csv文件操作 pdf文件操作 添加水印 创建水印文件 正文 1.excel文件 ...
- 千锋教育python2104期总结day13
千锋教育python2104期总结 第十二次总结:迭代器生成器和模块 目录 迭代器 生成器 模块 包的使用 正文 1.迭代器 什么是迭代器(iter) 迭代器是容器型数据类型,可以同时保存多个数据:可 ...
- 千锋教育python2104期总结day4
千锋教育python2104期总结day4 第三次总结: 循环 目录 1.for循环 2.while 3.循环关键字 4.作业 正文 1. for循环 循环 - 让代码重复执行(代码写一遍,运行执行多 ...
- 千锋教育python2104期总结day17
千锋教育python2104期总结 第十六次总结: 面向对象编程基础 目录 编程思想 类和对象 对象方法 init方法 属性 方法 作业 正文 1.编程思想 编程思想:面向过程编程(穷人思想).函数式 ...
- 千锋教育python2104期总结day6
千锋教育python2104期总结 第一次总结: 基础语法和变量 目录 复习 列表切片 删和改 列表相关操作 相关函数和方法 作业 正文 1. 复习 1.列表(list) 容器:[元素1, 元素2, ...
最新文章
- fmod实现声音波形_“老张说数理化”—中考物理专题02-声音与环境(收藏可打印)...
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- 对高性能Web服务的研究笔记
- js中的(function(){...})()
- GitHub.com上的那些东西你都知道什么意思吗?
- 字符串的地址_面试题:我有一批IPv6地址,你帮我想个办法来存储?
- Python学习笔记简单数据类型之字符串
- 暗藏 15 年,Linux 惊曝 3 大 Bug 直取 root 权限!
- 【SLAM学习笔记】8-ORB_SLAM3关键源码分析⑥ Optimizer(三)全局优化
- 二元函数连续与偏导数存在的关系_二元函数连续、偏导数和全微分之间的关系...
- taxi计费器c语言程序,出租车计价器VHDL程序与仿真
- 抽奖游戏 js php,jQuery实现简单的抽奖游戏技术分享
- Node.js开发入门—使用http访问外部世界
- 【中南林业科技大学】【陈】第十周作业sqi成绩管理系统
- 摩尔庄园怎么显示全部服务器,摩尔庄园手游服务器查看区别方法
- oracle序列高速缓存,行高速缓存上的等待事件
- springboot+基于微信小程序的心理测评与活动管理的设计与实现 毕业设计-附源码191752
- C语言程序AT24C64
- biti_rainy的博客
- 反需求函数和边际收益_边际收益和需求价格弹性_微观经济学
热门文章
- windows的系统还原
- GAVH39,PM1132,供电220v转5v芯片,SOT23-3,AC-DC小功率应用方案
- PROTEL 99 常用库文件分立元件库和快捷键
- zzuli OJ 1114: 逆序
- 西班牙语dele等级_西班牙语DELE考试不同等级到底是什么水平?
- 阅读论文 Non-local Neural Networks(非局部神经网络)
- 前端开源实战项目,大厂级别
- 查找算法【哈希表】 - 散列查找及性能分析
- Android/JAVA 针对时间戳转今天昨天前天,以及刚刚,几分钟的显示
- Dynamics CRM 附件功能