ParisGabriel
每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰
 

                      Python人工智能从入门到精通

补充:包的相对导入 只对后两种导入方式有用  前两次改进的学生管理系统在20课中 已补充

异常(基础)except:
  什么是错误:
    是指由于逻辑或语法等导程序无法正常执行的问题
  什么是异常:
    是程序出错的标识符的一种状态
    当异常发时 程序会再向下执行,而转去调用此函数的地方
    待处理此错误并恢复正常状态
  异常的作用:
    用作信号, 通知上层调用者有错误产生需要处理
try 语句
  两种语法:
    ry-except语句(接受异常通知)
    try-finally语句
try-except 语法
   try:
    可能触发异常的语句
    except 错误类型1[as 变量1]:
      异常处理语句2
    except 错误类型2[as 变量2]:
       异常处理语句2
    except (错误类型3, 错误类型4,...)[as 变量3]:
       异常处理语句3
    ......
    except:
      异常处理语句(其他)(匹配所有类型错误)
    else:
      未发生异常语句(可以没有此语句 没有发成异常时调用)
    finlly:
      最终语句
 作用:
   尝试捕获异常程序由异常状态转为正常状态并正常执行

  说明:

   1. as 子句是用于绑定错误对象的变量,可以省略
   2. except 子句可以有一个或多个,但至少要有一个
   3. else 子句最多只能有一个,也可以省略不写
   4. finally 子句最多只能有一个,也可以省略不写
   5. else 子句将在try没有出现异常时执行
   6. finally子句的语句在任何情况下都会被执行

示例:

# 此示例示意用try-except 语句捕获异常并做出相应的处理
def div_apple(n):print("%d个苹果您想分给几个人?" % n)s = input("请输入人数: ")cnt = int(s)  # <- 此处可能触发ValueError类型错误result = n / cnt  # <- 此处可能触发ZeroDivisitionError错误print("每个人分了%d个苹果" % result)try:print("开始分苹果")div_apple(10)  # 可能触发异常的调用print("结束分苹果")
except ValueError:print("发生成值错误,已处理并转为正常状态!")
except ZeroDivisionError:print("发生了被零除的错误,程序已转为正常状态")print("程序正常执行并完全任务,退出程序")

try-finally语法
  try:
      可能触发异常的语句
  finally:
    最终语句
 说明:
   1.finally子句不可以省略
   2.一定不存在except子句
 作用:
   通常try-finally语句来做触发异常时必须要处理的事情
   无论异常是否发生finally子句一定会被执行
 注意:
   try-finally 语句不会改变程序的(正常/异常)状态

 示例:

# 以下以 煎蛋为例示意 try-finally语句的用法
# 必须要做的事情是,关闭天燃气def fry_egg():print("打开天燃气点燃...")try:count = int(input("请输入鸡蛋个数: "))print("完成煎鸡蛋,共煎了%d个鸡蛋" % count)finally:print("关闭天燃气")fry_egg()

raise 语句:(发起异常通知)
  作用:
    触发一个错误, 让程序进入异常状态
  语法:
    raise 异常类型
    或
    raise 异常对
  实例:

def make_exception():print("函数开始")# 发出一个ValueError类型的错误通知给调用者# raise ValueErrorerr = ValueError("这是自定义的错误数据")raise err  # 用 err触发一个异常通知print("函数结束")try:make_exception()print("make_exception调用结束!")
except ValueError as e:print("接收到ValueError类型的异常通知")print("错误对象是:", e)

assert 断言语句:
  语法:
    assert 真值表达式, 错误数据(通常是字符串)
  作用:
    当真值表达式为False时, 用错误数据创建一个AssertionError
    类型的错误, 并进入异常状态
  等同于:
    if 真值表达式 == false
      raise AssertrtionError(错误数据)
  实例:

def get_score():s = int(input("请输入学生成绩: "))assert 0 <= s <= 100, '成绩超出范围'# if not (0 <= s <= 100):#     raise AssertionError('成绩超出范围')return stry:score = get_score()
except AssertionError as err:print("错误数据是:", err)print('获取成绩失败')score = 0print("学生的成绩为:", score)

    小结:
      异常处理语句(4条):
        try-except 语句:
          用于接受异常通知, 捕获异常
        try-finally 语句:
          执行必须执行的语句
        raise 语句:
          发送异常通知, 并进入异常状态
        assert 语句:
          根据条件选着性的发送 AssertionError类型的异常通知
为什么要处理异常机制:
  在程序调用层比较深的时候, 向主调用函数传递错误信息 需要层层return返回
  比较麻烦用异常处理机制可以较简单传递错误信息

    

Python全部的错误类型

错误类型 说明
以下内容必讲  
ZeroDivisionError 除(或取模)零 (所有数据类型)
ValueError 传入无效的参数
AssertionError 断言语句失败
StopIteration 迭代器没有更多的值
IndexError 序列中没有此索引(index)
IndentationError 缩进错误
OSError 输入/输出操作失败
ImportError 导入模块/对象失败
NameError 未声明/初始化对象 (没有属性)
AttributeError 对象没有这个属性
   
GeneratorExit 生成器(generator)发生异常来通知退出
TypeError 对类型无效的操作
KeyboardInterrupt 用户中断执行(通常是输入^C)
OverflowError 数值运算超出最大限制
FloatingPointError 浮点计算错误
BaseException 所有异常的基类
SystemExit 解释器请求退出
Exception 常规错误的基类
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
WindowsError 系统调用失败
LookupError 无效数据查询的基类
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
以下为警告类型  
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告
详见:help(builtins)

练习:
写一个函数 get_score() 来获取学生成绩,
要求用户输入 1~100的整数,输果输入出现异常,返此函数返回0,
否则返回用户输入的成绩
示例:
def get_score():
...
score = get_score()
print("学生的成绩是:", score)

练习:
1. 一个球从100米高空落下 ,每次落地后反弹高度是原高度的一半, 在落下
1)写程序算出皮球在第10次落地后反弹高度是多高?
2)打印出球共经过多少米的路程

答案:

def ball(n, m):L = [100]while True:if n == 0:print("最后弹起的高度是%s米" % s)breaks = m * 0.5m = sL.append(s + m)n -= 1return L
print("10次共经历了%s米的路程" % sum(ball(10, 100)))

2. 分解质因数, 输入一个整数, 分解质因数 ,
如:
输入 90
则打印:
“90=2*3*3*5”
(质因数是指最小能被原数整除的素数 不包括1)

答案:

def m(n):ret = []while n > 1:for i in range(n):k = i + 2if n % k == 0:ret.append(k)n = int(n / k)breakreturn retprint(m(90))

3. 修改原学生信息管理程序,加入异常处理语句,让程序在任何情况下都能够按逻辑正常执行.
例如:
输入成绩和年龄时,如果用户输入非法字符串也不会导致程序崩溃

转载于:https://www.cnblogs.com/ParisGabriel/p/9338724.html

Python全栈工程师(异常(基础))相关推荐

  1. python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云

    python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...

  2. Python全栈工程师-第1周-韦玮-专题视频课程

    Python全栈工程师-第1周-1583人已学习 课程介绍         Python全栈工程师-第1周 课程收益     Python全栈工程师培养课程 讲师介绍     韦玮 更多讲师课程    ...

  3. Python 全栈工程师必备面试题 300 道(2020 版)

    2020元旦巨献,面试升级必备!献给正在学习Python的同学! Python 全栈工程师必备面试题 300 道(2020 版) Python 面试不仅需要掌握 Python 基础知识和高级语法,还会 ...

  4. python全栈工程师薪水_不止 20K,Python 工程师薪资再飙升(内附转型指南)

    原标题:不止 20K,Python 工程师薪资再飙升(内附转型指南) Python 诞生之初就被誉为最容易上手的编程语言.进入火热的 AI 人工智能时代后,它也逐渐取代 Java,成为编程界的头牌语言 ...

  5. 案例驱动python编程入门-郑州高薪python全栈工程师

    阶段一.Python 全栈工程师之必知必会 - 前端开发技术 课程一.入门必备 - 新手学 HTML5+CSS3 1.HTML基本标签 2.W3C标准及XHTML1.0基本规范 3.表格.表单及框架 ...

  6. python全栈工程师薪水_python全栈+爬虫+自动化+AI=python全能工程师-挑战年薪30W+

    如果你想选择一种语言来入门编程,那么Python绝对是首选! Python非常接近自然语言,精简了很多不必要的分号和括号,非常容易阅读理解.编程简单直接,更适合初学编程者,让其专注于编程逻辑,而不是困 ...

  7. 2017最新整理python全栈工程师系统培训之路精品课程(全套)

    百度搜索"一起自学吧"做大数据专家,不做第一,只做唯一. 课程介绍: 本课程由一起自学吧论坛打造,目的是给想成为Python全栈工程师的同学提供一套完整,全面而系统的培训课程,课程 ...

  8. Python全栈工程师-第14周-韦玮-专题视频课程

    Python全栈工程师-第14周-136人已学习 课程介绍         Python全栈工程师 课程收益     Python全栈工程师 讲师介绍     韦玮 更多讲师课程     企业家,IT ...

  9. Python全栈工程师-第2周(新)-韦玮-专题视频课程

    Python全栈工程师-第2周(新)-256人已学习 课程介绍         Python全栈工程师-第2周(新),爬虫部分 课程收益     Python全栈工程师 讲师介绍     韦玮 更多讲 ...

  10. Python全栈工程师-第2周-韦玮-专题视频课程

    Python全栈工程师-第2周-677人已学习 课程介绍         Python全栈工程师-第2周 课程收益     Python全栈工程师培养 讲师介绍     韦玮 更多讲师课程     企 ...

最新文章

  1. qchart画完以后删除_Unity2019基础教程:TileMap搭建像素画场景关卡
  2. android配置文件说明
  3. Netflix网关zuul(1.x和2.x)全解析
  4. 采购订单增强(根据公司代码、采购订单类型等相关订单信息给采购订单税码设置默认值)
  5. Hibernate----Hibernate小配置
  6. web容器(03):Nginx配置负载均衡
  7. 孤傲授权系统网站源码
  8. SpringBoot (14)---使用Redis缓存
  9. Spring Security Oauth2 之密码模式
  10. react离开页面,自定义弹框拦截,路由拦截
  11. 杭电oj1257最少拦截系统(贪心)
  12. 最流行的 .NET 反编译工具合集
  13. git提交中target等目录忽略与取消忽略
  14. 百度云图片识别(ImageRecognition)
  15. word文档打对勾_word文档怎么打勾 word文档方框内打勾六种方法介绍
  16. 【生活随笔】研究生如何学习
  17. 送一些专属红包封面。
  18. 基于IOS音乐播放器在线歌词同步小程序系统(音乐小程序)
  19. 批量更改Excel文件中大量工作表的内容(修改公司一千多份excel表格)
  20. 七夕学习礼物:轻巧好用的讯飞智能录音笔SR101

热门文章

  1. SAP CRM PPR调试截图,头都搞大了,希望这问题这辈子只遇到这次
  2. Association, Composition and Aggregation in UI5, CRM, S/4HANA and C4C
  3. vue 如何将参数放到连接上_通过Vue路由传参的两种方式及Vue组件中接收参数的方式...
  4. php mariadb 查询语法,从PHP调用的查询中的MySQL(MariaDB)执行超时
  5. php代码在线base64解码,Base64在线编码解码实现代码 演示与下载
  6. html5求6的阶乘,.net 求数的阶乘
  7. 虚拟机克隆改变IP地址,配置环境及免密设置
  8. java整数四则运算课设_用面向对象方法设计实现整数的四则运算(java)
  9. 理论计算机科学研究生,清华大学理论计算机科学中心姚期智组招收保送研究生,请帮忙发到虎...
  10. 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立