首页 编程教程正文

【Python】人工智能全栈工程师(0基础到精通)教程 第二十一课

piaodoo 编程教程 2020-02-22 22:01:31 926 0 python教程

本文来源吾爱破解论坛

本帖最后由 ParisGabriel 于 2018-7-20 01:10 编辑

ParisGabriel



感谢 大家的支持                                全部课程 原文地址 :                                                                           http://www.cnblogs.com/ParisGabriel/tag/Python/ 嗨学网                                                      

                    每天坚持手写  一天一篇 点个订阅吧  决定坚持几年 全栈工程师(包含:python、爬虫、Web、人工智能、h5等      讲完接着 java、黑客攻防 、渗透、                                                               易语言(比较简单学完python基本就会了)、等等到时候再说....  IT无止境!   灰常感谢    当个死粉也阔以嗨学网嗨学网                      
                                                                                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子句的语句在任何情况下都会被执行
示例:[Python] 纯文本查看 复制代码

# 此示例示意用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 语句不会改变程序的(正常/异常)状态 示例:[Python] 纯文本查看 复制代码
# 以下以 煎蛋为例示意 try-finally语句的用法
# 必须要做的事情是,关闭天燃气

def fry_egg():
    print("打开天燃气点燃...")
    try:
        count = int(input("请输入鸡蛋个数: "))
        print("完成煎鸡蛋,共煎了%d个鸡蛋" % count)
    finally:
        print("关闭天燃气")


fry_egg()

raise 语句:(发起异常通知)
  作用:
    触发一个错误, 让程序进入异常状态
  语法:
    raise 异常类型
    或
    raise 异常对
  实例:[Python] 纯文本查看 复制代码
def make_exception():
    print("函数开始")
    # 发出一个ValueError类型的错误通知给调用者
    # raise ValueError
    err = 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(错误数据)
  实例:
[Python] 纯文本查看 复制代码
def get_score():
    s = int(input("请输入学生成绩: "))
    assert 0 <= s <= 100, '成绩超出范围'
    # if not (0 <= s <= 100):
    #     raise AssertionError('成绩超出范围')
    return s


try:
    score = get_score()
except AssertionError as err:
    print("错误数据是:", err)
    print('获取成绩失败')
    score = 0

print("学生的成绩为:", score)


    小结:
      异常处理语句(4条):
        try-except 语句:
用于接受异常通知, 捕获异常
        try-finally 语句:
          执行必须执行的语句
        raise 语句:
          发送异常通知, 并进入异常状态
        assert 语句:
          根据条件选着性的发送 AssertionError类型的异常通知
为什么要处理异常机制:
  在程序调用层数比较深的时候, 向主调用函数传递错误信息 需要层层return返回
  比较麻烦, 用异常处理机制可以较简单的传递错误信息     Python全部的错误类型  [td]错误类型说明以下内容必讲 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语法错误TabErrorTab 和空格混用SystemError一般的解释器系统错误UnicodeErrorUnicode 相关的错误UnicodeDecodeErrorUnicode 解码时的错误UnicodeEncodeErrorUnicode 编码时错误UnicodeTranslateErrorUnicode 转换时错误以下为警告类型 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)
上述留给评论区................

8XL`(8D~7I79~(NK6MEVY)3.jpg (2.29 KB, 下载次数: 0)

下载附件  保存到相册

2018-7-20 01:06 上传



练习:
1. 一个球从100米高空落下 ,每次落地后反弹高度是原高度的一半, 在落下
1)写程序算出皮球在第10次落地后反弹高度是多高?
2)打印出球共经过多少米的路程 答案:
[Python] 纯文本查看 复制代码
def ball(n, m):
    L = [100]
    while True:
        if n == 0:
            print("最后弹起的高度是%s米" % s)
            break
        s = m * 0.5
        m = s
        L.append(s + m)
        n -= 1
    return L
print("10次共经历了%s米的路程" % sum(ball(10, 100)))

嗨学网



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

答案
[Python] 纯文本查看 复制代码
def m(n):
    ret = []
    while n > 1:
        for i in range(n):
            k = i + 2
            if n % k == 0:
                ret.append(k)
                n = int(n / k)
                break
    return ret

print(m(90))

嗨学网  

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


此题记账  

QQ图片20180720010714.jpg (2.91 KB, 下载次数: 0)

下载附件  保存到相册

2018-7-20 01:07 上传

...............................

本帖被以下淘专辑推荐: · 编程区新手入门专题|主题: 73, 订阅: 94

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7327.html

搜索