当前位置: 首页 > news >正文

python10.4.3

10.4.3重构
错误实例

import jsondef laoyonghu():      #获取老用户名字filename='username.json'with open(filename) as f:username=json.load(f)return usernamedef xinyonghu():   #获取新用户名字filename='username.json'username=input("what's your name:")with open(filename,'w') as f:json.dump(username,f)return usernamedef dazhaohu(): #给新或老用户打招呼username=laoyonghu()if username:       #如果有老用户(为真)print(f"welcome {username}.")else:username=xinyonghu()print(f"we'll remember you when you come back, {username}.")dazhaohu()

以上代码的运行顺序,是运行打招呼函数时,先调用老用户函数,再调用新用户函数。如果调用老用户函数时,filename.json文件不存在,则会导致FileNotFoundError程序出错,无法进入else新用户print部分。

为避免出现这种情况,需要在获取老用户的函数中,使用try-except代码块,防止因文件不存在导致错误,表达为except FileNotFoundError后return None,else之后return username。否则运行打招呼函数时,会因为老用户函数中的filename不存在而直接导致FileNotFoundError,

修改后:

import jsondef laoyonghu():filename='username.json'try:with open(filename) as f:username=json.load(f)except FileNotFoundError:return Noneelse:return usernamedef xinyonghu():filename='username.json'username=input("what's your name:")with open(filename,'w') as f:json.dump(username,f)return usernamedef dazhaohu():username=laoyonghu()if username:print(f"welcome {username}.")else:username=xinyonghu()print(f"we'll remember you when you come back, {username}.")dazhaohu()
http://www.lryc.cn/news/111993.html

相关文章:

  • 系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
  • Vue中,$forceUpdate()的使用
  • K8s中的Ingress
  • c++调用ffmpeg api录屏 并进行udp组播推流
  • war包方式安装linux和windows的geoserver
  • 安装CUDA与CUDNN与Pytorch(最新超级详细图文版本2023年8月最新)
  • 内存快照:宕机后,Redis如何实现快速恢复?RDB
  • Linux之 Ubuntu 安装常见服务 (二) Tomcat
  • docker 配置 Mysql主从集群
  • Layui实现OA会议系统之会议管理模块总合
  • fishing之踩坑篇捕获数据不齐全
  • ppt使用笔记
  • java中的hashmap和concurrenthashmap解析
  • 元素2D转3D 椭圆形旋转实现
  • Centos7.9 制作openssh9.2p2 rpm升级包和升级实战
  • JavaScript学习(3)
  • 2023华为OD机试真题Java实现【寻找最大价值的矿堆/深度优先搜索】
  • MyCat概述
  • 【LeetCode】【数据结构】单链表OJ常见题型(一)
  • QGraphicsView实现简易地图3『局部加载-地图缩放』
  • bash的特性(二)IO重定向与管道
  • elb 直接配置到后端服务器组
  • 安卓:BottomNavigationBar——底部导航栏控件
  • 十、用 ChatGPT 辅助写文章
  • 计算机毕设 深度学习猫狗分类 - python opencv cnn
  • 60多行代码仿制B站首页一个好看的卡片效果
  • Redis内网主从节点搭建
  • ESP32-C2开发板 ESP8684芯片 兼容ESP32-C3开发
  • Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结
  • 一台电脑给另外一台电脑共享网络