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

python13——异常处理

1、什么是异常

如果代码没有语法问题,可以运行,但会出现运行时错误,例如除零错误、下标越界等问题,这种在运行期间检测到的错误被标为异常。出现了异常必须处理,否则程序会终止执行,用户体验很差。python支持程序员处理自己检测到的异常。可以使用try-except语句进行异常的检测和处理。

2、python中常见的异常类型

#nameerror:拼错名字
prlnt('hello')  #name 'prlnt' is not defined#语法错误
if 'he' =='hi'  #SyntaxError: expected ':',忘加:print('hello')
if 'he' =='hi':
print('hello')  #IndentationError: expected an indented block after 'if' statement on line 312
print(3+'2') #TypeError: unsupported operand type(s) for +: 'int' and 'str'数据类型错误
t=(1,3,5)
t[4]=4
print(t)  #TypeError: 'tuple' object does not support item assignment
t=(1,3,5)
t.append(2)
print(t) #AttributeError: 'tuple' object has no attribute 'append'属性错误
d={1:2,2:3}
print(d[3]) #KeyError: 3,即key不存在
t=(1,3,5)
print(t[4]) #IndexError: tuple index out of range

3、try-except语句

try:n=int(input('请输入一个数字:'))print(5/n)
except ZeroDivisionError as e:  #as用以更名print('除数不能为0!')print('原始报错信息:',e)
except:print('如果出现异常,会进入该代码块执行。')
else:print('运行中没有被except语句捕获,则执行else语句。')
finally:print('无论如何,都要执行finally语句。')#结果:
请输入一个数字:0
除数不能为0!
原始报错信息: division by zero
无论如何,都要执行finally语句。

4、raise关键字

try:pwd=input('请输入你的密码:')if len(pwd)<8:raise Exception('密码长度不够!')
except Exception as e:print(e)#结果:
请输入你的密码:234
密码长度不够!

5、pycharm中的代码调试

6、知识总结及练习题

7、案例实战:简单计算器

#代码框架while True:op=input('请输入一个算式:')if True: #加法passelif '减法':passelif '乘法':passelif '除法':passelif op=='C':print('感谢您的使用!')break
    while True:try:op = input('请输入一个算式:')if '+' in op:  # 加法a = op.split('+')print(int(a[0]) + int(a[1]))elif '-' in op:a = op.split('-')print(int(a[0]) - int(a[1]))elif '*' in op:a = op.split('*')print(int(a[0]) * int(a[1]))elif '/' in op:a = op.split('/')print(int(a[0]) / int(a[1]))elif op == 'C':print('感谢您的使用!')breakelse:raise Exception('请输入正确的算式!')except ZeroDivisionError:print('除数不能为0!')except Exception as e:print(e)#结果:
请输入一个算式:1/0
除数不能为0!
请输入一个算式:1/2
0.5
请输入一个算式:C
感谢您的使用!
得分为3的人数为2
请输入一个算式:
http://www.dtcms.com/a/395473.html

相关文章:

  • AXI_CAN IP 简单使用。(仿真、microblaze)
  • zabbix-mcp-server:使用自然语言操作Zabbix
  • 【Makefile】Linux内核模块编译
  • Qt 系统相关 - 音视频
  • Go基础:Go语言中的指针详解:在什么情况下应该使用指针?
  • ReactNative性能优化实践方案
  • 大数据数仓面试问题
  • 深入理解Java中的==、equals与hashCode:区别、联系
  • Qt笔记:QString::toLocal8Bit的理解
  • 第12章 机器学习 - 局限性
  • ​​[硬件电路-320]:模拟电路与数字电路,两者均使用晶体管(如BJT、MOSFET),但模拟电路利用其线性区,数字电路利用其开关特性。
  • 今日行情明日机会——20250922
  • 智能交通拥堵检测系统详解(附视频+代码资源)
  • LLM 数据安全:筑牢数据防线
  • AI 在医疗领域的十大应用:从疾病预测到手术机器人
  • 零序电流/电压(面向储能变流器应用)
  • 【系统分析师】2024年上半年真题:综合知识-答案及详解(回忆版)
  • 给工业通信装“耐达讯自动化翻译器”:电表说Modbus,主控听Profibus,全靠它传话
  • 不同品牌PLC如何接入云平台?御控多协议物联网网关一站式集成方案
  • 深入理解指针(最终章):指针运算本质与典型试题剖析
  • SCI 期刊验证!苏黎世大学使用 ALINX FPGA 开发板实现分子动力学模拟新方案
  • C# OnnxRuntime yolov8 纸箱分割
  • SQLite3的API调用实战例子
  • LeetCode 60. 排列序列
  • springboot2.7.11 + quartz2.3.2,单机,集群实战,增删改查任务,项目一启动就执行任务
  • Hive 调优
  • 王晨辉:RWA注册登记平台赋能资产数字化转型
  • 周末荐读:美 SEC 推出加密货币 ETF 上市标准,Base 发币在即
  • HTTP API获取 MQTT上报数据
  • Apache HTTP基于端口的多站点部署完整教程