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("程序正常运行,没有捕捉到异常")

到此这篇关于 Python错误与异常处理的文章就介绍到这了,更多相关 Python错误与异常处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-01-18

Python异常处理中容易犯得错误总结

目录 Python异常处理机制 Python异常处理机制 如果try异常处理中存在finally,finally中的代码总会得到执行 下面例子只是作为演示,不用去纠结业务逻辑 容易犯的错误1 看下面的代码,写出输出结果 def dig_dig1(): while True: print("I'm in while loop") try: print("I'm in try") raise EOFError except IOError: print("IO

python基础之错误和异常处理

import Exception # except 在捕获错误异常的时候 是要根据具体的错误类型来捕获的 # 用一个块 可以捕获多个不同类型的异常 # EXception 可以捕获所有异常 当对出现的问题或者错误不确定的情况下 可以使用此种 print(dir(Exception)) try: # print(b) #捕获逻辑的代码 li=[1,2,3,4] print(li[10]) pass except NameError as msg: # 捕获到的错误 才会在这里执行 print(ms

Python中的错误和异常处理简单操作示例【try-except用法】

本文实例讲述了Python中的错误和异常处理操作.分享给大家供大家参考,具体如下: #coding=utf8 print ''''' 程序编译时会检测语法错误. 当检测到一个错误,解释器会引发一个异常,并显示异常的详细信息. 在代码中添加错误检测及异常处理,只需要将代码封装在try-except语句中. try: try_suite except : except_suite ------------------------------------------------------------

Python中列表与元组的乘法操作示例

本文实例讲述了Python中列表与元组的乘法操作.分享给大家供大家参考,具体如下: 直接上code吧,还可以这么玩儿 列表乘法: li=[1,] li=li*3 print(li) out: [1, 1, 1] 元组乘法: >>> t=(1,2) >>> t*3 (1, 2, 1, 2, 1, 2) 但字典,集合不能这么玩 例如: >>> dict1={'k1':1,'k2':2} >>> dict1*2 #报错 Traceback

Python中xml和json格式相互转换操作示例

本文实例讲述了Python中xml和json格式相互转换操作.分享给大家供大家参考,具体如下: Python中xml和json格式是可以互转的,就像json格式转Python字典对象那样. xml格式和json格式互转用到的xmltodict库 安装xmltodict库 C:\Users\Administrator>pip3 install xmltodict Collecting xmltodict   Downloading xmltodict-0.11.0-py2.py3-none-any

Python中的fileinput模块的简单实用示例

这几天有这样一个需求,要将用户登陆系统的信息统计出来,做成一个报表.当用户登陆成功的时候,服务器会往日志文件里写一条像下面这种格式的记录:"日期时间@用户名@IP",这样的日志文件第天生成一个.所以,我们只要编历这些日志文件,将所有的登陆信息提取出来,并重新组织数据格式就可以了.用python写一个分析工具非常简单,你会说,用glob获取所有的日志文件,然后对每个日志文件都open(logfile),再一行一行的读取:或者用os.walk,也很简单.其实,标准库提供了另一个辅助模块,我

Python中顺序表的实现简单代码分享

顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __init__(self, max=8): self.max = max #创建默认为8 self.num = 0 self.date = [None] * self.max #list()会默认创建八个元素大小的列表,num=0,并有链接关系 #用list实现list有些荒谬,全当

Python中文件的读取和写入操作

从文件中读取数据 读取整个文件 这里假设在当前目录下有一个文件名为'pi_digits.txt'的文本文件,里面的数据如下: 3.1415926535 8979323846 2643383279 with open('pi_digits.txt') as f: # 默认模式为'r',只读模式 contents = f.read() # 读取文件全部内容 print contents # 输出时在最后会多出一行(read()函数到达文件末会返回一个空字符,显示出空字符就是一个空行) print '

在python中使用pyspark读写Hive数据操作

1.读Hive表数据 pyspark读取hive数据非常简单,因为它有专门的接口来读取,完全不需要像hbase那样,需要做很多配置,pyspark提供的操作hive的接口,使得程序可以直接使用SQL语句从hive里面查询需要的数据,代码如下: from pyspark.sql import HiveContext,SparkSession _SPARK_HOST = "spark://spark-master:7077" _APP_NAME = "test" spa

Python 中 Virtualenv 和 pip 的简单用法详解

本文介绍了Python 中 Virtualenv 和 pip 的简单用法详解,分享给大家,具体如下: 0X00 安装环境 我们在 Python 开发和学习过程中需要用到各种库,然后在各个不同的项目和作品里可能用的版本还不一样,正因为有这种问题的存在才催生了virtualenv的诞生.virtualenv 可以在电脑上创建一个虚拟环境,可以针对每一个项目创建一个虚拟环境,这样就不用担心各个不同的项目用不同版本的库的时候出现的冲突了. 下面的内容只适用于 Linux/OSX,未经 Windows 环

python中requests和https使用简单示例

requests 是一个非常小巧全面的库,应用它可以很容易写出与服务器进行交互的程序,今天遇到了一个问题,与服务器交互时,url都是https开头的,都进行了ssl加密处理,这样一来,就不能像之前那样访问http开头的url那样进行处理了. 查了一些资料,可以配置ssl进行验证的文件,方式如下 res = requests.get('https://127.0.0.1:5503/login',cert=('./server.crt', './server.key.unsecure')) 可运行后

Python中join()函数多种操作代码实例

这篇文章主要介绍了Python中join()函数多种操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python中有.join()和os.path.join()两个函数,具体作用如下: . join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 os.path.join(): 将多个路径组合后返回 对序列进行操作(分别使用' ' .' - '与':'作为分隔符) a=['1aa','