python 异常
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 异常,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3828字,纯文字阅读大概需要6分钟。
内容图文
![python 异常](/upload/InfoBanner/zyjiaocheng/841/732717bbe42b4998b3d6c7465bcab78e.jpg)
异常
定义:python使用被称为异常的特殊对象来管理程序执行期间发生的错误,每当发生让python不知所措的错误时,它都会创建一个异常对象。
1、处理ZeroDivisionError异常
先看下不处理异常的情况
1 print(5/0)
执行结果:
1 Traceback (most recent call last): 2 File "C:/pycharm/python3/python异常.py", line 4, in <module> 3 print(5/0) 4 ZeroDivisionError: division by zero
数字0不能作为除数,就会报错,那么如何处理Traceback异常。
2、使用try - except代码块
当你认为可能发生错误时,可编写一个try - except异常:
#python:异常
try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")
执行结果:
You can't divide by zero!
这样操作,就不会有直接报错,代码也可以正常运行并给你想知道的结果。
1、使用异常避免崩溃,使用else语句
1 #使用异常避免崩溃,使用else代码块
2 print("Hi,给我2个数字,我做除法运算。")
3 print(10 * '-' + '分割线' + 10 * '-') 4 print("input 'q' is exit:") 5 6 while True: 7 first_number = input('give me a first_number:') 8 second_number = input('give me a second_number:') 9 if first_number == 'q': 10 break
11 elif second_number == 'q': 12 break 13 try: 14 answer =int(first_number)/int(second_number) 15 except ZeroDivisionError: 16 print("You can't divide by zero!") 17 18 else: 19 print(answer) 20 print(10*'-' + '底线' + 10*'-')
执行结果:
Hi,给我2个数字,我做除法运算。
----------分割线----------
input 'q' is exit:
give me a first_number:520
give me a second_number:6
86.66666666666667
----------底线----------
give me a first_number:500
give me a second_number:0
You can't divide by zero!
give me a first_number:'q'
Process finished with exit code 0
这样的操作即使在代码使用过程中,即使遇到错误,有还是会正常的运行下去,不会报错。
但是在运行过程中,遇到以下几个问题:
- 我想退出操作,需要输入两遍 'q'才行。
- 如果我输入不是字母‘q’,程序就会报错。
- 因为使用了while Ture死循环,可不可以在显示人机交互的次数?方便用户知道信息
- 程序整体不够美观
解决方法:
- 调换指引用户输入的first_number和second_number位置
- 引入isdigit()方法:判断输入是否为数字
- 使用占位符 %s,累加次数
优化后的代码:
1 print("Hi,给我2个数字,我做除法运算。") 2 print(10 * '-' + '分割线' + 10 * '-') 3 print("input character is exit!") 4 number = 2 5 6 while True: 7 first_number = input('give me a first_number:') 8 if first_number.isdigit() == False: 9 print(10 * '-' + 'ByB' + 10 * '-') 10 break 11 second_number = input('give me a second_number:') 12 if second_number.isdigit() == False: 13 print(10 * '-' + 'ByB' + 10 * '-') 14 break 15 try: 16 answer =int(first_number)/int(second_number) 17 except ZeroDivisionError: 18 print("You can't divide by zero!") 19 20 else: 21 print(answer) 22 print(10*'-' + '第%s轮'%number + 10*'-') 23 number += 1
执行结果:
Hi,给我2个数字,我做除法运算。 ----------分割线---------- input character is exit! give me a first_number:520 give me a second_number:2 260.0 ----------第2轮---------- give me a first_number:2 give me a second_number:0 You can't divide by zero! give me a first_number:python ----------ByB----------
3、处理文件找不到的异常
有时候,查找文件,并读取其中的数据,如果找不到程序就会报错,那么我们怎么处理这种异常?
同样,使用try...except代码块操作
代码:
1 filename = 'new_file3.txt' 2 3 try: 4 with open(filename) as file_objects: 5 contents = file_objects.read() 6 print(contents) 7 except FileNotFoundError: 8 print("sorry,we can't find the " + filename + ' file')
执行结果:
sorry,we can't find the new_file3.txt file
再试下之前学习的文件操作,读取一个存在的文件试试:
代码:
1 filename = 'new_file.txt' #定义文件名称 2 3 try: 4 with open(filename) as file_objects: 5 contents = file_objects.read() #读取文件内容 6 print(contents) #打印文件内容 7 except FileNotFoundError: 8 print("sorry,we can't find the " + filename + ' file')
执行结果:
I love python.
内容总结
以上是互联网集市为您收集整理的python 异常全部内容,希望文章能够帮你解决python 异常所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。