Python错误与异常处理
作者:战士小小白? 发布时间:2022-10-28 01:10:33
标签:Python,错误,异常处理
1. 从键盘输入一个整数,求 100 除以它的商,并显示输出。要求对从键盘输入的数值进行异常处理。
try:
n=int(input("请输入一个整数:"))
x=100/n
print(x)
except ValueError:
print("异常,请重新输入:")
else: #可选项,必须try-except语句为前提
print("程序正常运行,没有捕捉到异常")
2.编程实现索引超出范围异常 Index Error 类型。例如:chars=["a","b",100,-37,2]
try:
chars=["a","b",100,-37,2]
chars[5]="k" #产生该类型异常
except IndexError:
print("异常,索引超出范围")
else: #可选项,必须try-except语句为前提
print("程序正常运行,没有捕捉到异常")
3.录入一个学生的成绩,把该学生的成绩转换为 A 优秀、B 良好、C 合格、D 不及格的形式,最后将该学生的成绩打印出来。要求使用 assert 断言处理分数不合理的情况。
try:
score=int(input('请输入学生的成绩:'))
assert 0<=score<=100 #断言 成绩必须在0-100范围内
if score >= 90:
print("A优秀")
if score >= 80 and score < 90:
print("B良好")
if score >=60 and score <80:
print("C合格")
if score <60:
print("D不及格")
except ValueError:
print("异常,输入必须为整数")
except AssertionError: #断言异常信息
print("异常,输入的成绩{}不在0-100范围内".format(score))
else: #可选项,必须try-except语句为前提
print("程序正常运行,没有捕捉到异常")
4. 定义一个 Circle 类,其中有求面积的方法,当半径小于 0 时, 抛出一个用户自定义异常
import math
class RangeErrorException(Exception):#自定义异常类,判断半径范围是否异常
def __init__(self, error_reason='异常,圆的半径不能为负数!'):
Exception.__init__(self, error_reason)#定义的继承自Exception的类RangeErrorException
class Circle():
def __init__(self,r):
self.r=r
if self.r < 0:#当遇到自己设定的错误时,使用raise语句抛出自定义的异常
raise RangeErrorException
def getS(self): #计算获取圆的面积
area = math.pi *self.r *self.r
return area
try:
r=eval(input("请输入半径r:"))
c=Circle(r)
print("面积为:{:.2f}".format(c.getS()))
except RangeErrorException as reason:
print(reason)
else: #可选项,必须try-except语句为前提
print("程序正常运行,没有捕捉到异常")
5. 假设成年人的体重和身高存在此种关系: 身高(厘米)-100=标准体重(千克) 如果一个人的体重与其标准体重的差值在 其体重的正负 5%之间,显示“体重正常”,其他则显示“体重超标”或者“体重不达标”。编写程序,能处理用户输入的异常并且使用自定义异常类来处理身高小于 30cm、大于 250cm 的异常情况。
class HighErrorException(Exception):
def __init__(self,error_reason='异常,身高不能小于30cm或者大于250cm'):#自定义异常类,判断身高是否异常
Exception.__init__(self,error_reason)#定义的继承自Exception的类HighErrorException
class relation:
def __init__(self,high,weight):
self.high=high
self.weight=weight
if self.high<30 or self.high>250:
raise HighErrorException#当遇到自己设定的错误时,使用raise语句抛出自定义的异常
def rel(self):
y=self.weight-(self.high-100)
if abs(y) <= self.weight*0.05 :
print("体重正常")
elif y > self.weight*0.05 :
print("体重超标")
elif y < -self.weight*0.05:
print("体重不达标")
try:
h=eval(input("请输入身高(cm):"))
w=eval(input("请输入体重(kg):"))
f=relation(h,w)
f.rel()
except HighErrorException as reason:
print(reason)
else: #可选项,必须try-except语句为前提
print("程序正常运行,没有捕捉到异常")
6.设计一个一元二次方程类,并为这个类添加异常处理。
import math
class FunctionErrorException(Exception):
def __init__(self,error_reason='判别式<0,函数不存在实根'):
Exception.__init__(self,error_reason)
class Equation:
def __init__(self,a,b,c):
self.a = a
self.b = b
self.c = c
def getDiscriminant1(self): #判别式
d=(self.b)**2 -(4*self.a*self.c)
return d
def getRoot1(self):
if self.getDiscriminant1()>=0:
x1=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
return x1
else:
raise FunctionErrorException
def getRoot2(self):
if self.getDiscriminant1()>=0:
x2=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
return x2
else:
raise FunctionErrorException
try:
a=eval(input("请输入系数a:"))
b=eval(input("请输入系数b:"))
c=eval(input("请输入系数c:"))
f=Equation(a,b,c)
print("判别式:",f.getDiscriminant1())
print(" x1:",f.getRoot1())
print(" x2:",f.getRoot2())
except FunctionErrorException as reason:
print(reason)
else: #可选项,必须try-except语句为前提
print("程序正常运行,没有捕捉到异常")
来源:https://blog.csdn.net/weixin_53173524/article/details/122590147


猜你喜欢
- 用于存储数据的csv文件有时候数据量是十分庞大的,然而我们有时候并不需要全部的数据,我们需要的可能仅仅是前面的几行。这样就可以通过panda
- 1. 反射简介1.1 反射是什么?Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道
- 目录需求说明Do it需求说明如图,我想要实现当点击字母L,页面定位到L开头的城市名Do it1.找到字母表的页面在html标签绑定一个cl
- 常见的一种应用场景:条件:假设A的shape为[4, 2],B的shape为[5, 2]目的:实现A中的每一行, 减去B中的所有行(broa
- 前言何为爬虫,其实就是利用计算机模拟人对网页的操作例如 模拟人类浏览购物网站使用爬虫前一定要看目标网站可刑不可刑 :-)可以在目标网站添加/
- 在上篇文章中,讲解了MongoDB的基本操作,包括增、删、改、查,但是这些操作都是在命令行模式下进行的,这篇文章中讲解如何使用C#程序连接到
- 一、取得数据表 i 行 j 列的值 &n
- leaflet为R语言提供了API很好用,这次尝试用Python使用leaflet,需要folium安装foliumpip install
- 前言:NoxfileNox 默认在一个名为noxfile.py的文件中查找配置。在运行 nox 时,你可以使用 --noxfile参数指定其
- 这是内部的一个邮件记录,分享出来听下业内同行的声音。事情是这样的..==先是 A 推荐了白鸦的推到内部群:“设计师们一定要养成一个习惯:无论
- 通过my.ini更改默认字符集这里通过my.ini文件来设置默认字符集打开 my.ini在 [mysqld] 下面写上character-s
- 对于三目运算符(ternary operator),python可以用conditional expressions来替代如对于x<5
- 1、使用MySQLdb读取出来的数据是unicode字符串,如果要写入redis的hash中会变成"{u'eth0_out
- 本文实例讲述了Python3.5集合及其常见运算。分享给大家供大家参考,具体如下:1、集合的定义:集合是一个无序的、无重复的数据的数据组合。
- 让我们描绘一下本文的情节:假设您要在本地机器上运行一个进程,而部分程序逻辑却在另一处。让我们特别假设这个程序逻辑会不时更新, 而您运行进程时
- 抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢?最近都在做原生JS熟悉的练习。。。用原生Js封装了一个Ajax插件,引入一般的项
- 回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数
- 什么是形态学要了解腐蚀之前,我们需要了解一个概念:形态学。形态学,又名数学形态学(Mathematical Morphology),是图像处
- 前言一次偶然的想法,想知道为什么在终端输入那些命令行后,就执行了对应的操作,这转化为代码,应该怎么实现呢?既然有了问题,那我们就来解决问题吧
- PHP SESSION 的存储Session会话存储方式PHP将session以文件的形式存储服务器的文件中,session.save_pa