python-14 异常(基础)2迭代器

博客回顾了Python自定义模块、包的导入方式及模块内属性,介绍了异常处理相关内容,包括错误与异常的概念,try-except、try-finally、raise、assert等语句的语法和作用,还讲解了迭代器的定义、函数及使用方法,并给出了相关练习。

day13回顾:

  • 自定义模块
    模块名(标识符).py
    全局变量将成为模块的属性
    导入方式:
    import 语句
    from import 语句
    from import *语句

    搜索:

    1. 内建模块
    2. 当前工作路径
    3. sys.path提供的路径

    import mymod # 执行 mymod.py

    mymod.py —> mymod.pyc —> python

  • 模块内的序置属性
    doc 属性
    __file__属性
    __name__属性

all 列表
from import *语句

隐藏属性
以 _ 开头的 标识符 在 from import *语句导入时不会被导入

随机模块 random

包 pack
包的导入:
import 语句
import 包位置
from import 语句
form 包位置 import 子包/模块/属性
绝对位置 mypack.menu
相对位置 …menu
from import * 语句
from 包位置 import *

init.py
文档字符串
函数
__all__列表

day14笔记

异常(基础) exception

  • 什么是错误
    错误是指由于逻辑或语法等导致一个程序无法正常执行的问题

  • 什么是异常
    异常是程序出错误时标识的一种状态
    当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态

  • 作用:
    用作信号,通知上层调用者有错误产生需要处理

  • try语句:
    两种语法:
    try-except 语句
    try-finally 语句

  • try-except语句

    • 语法:
      try:
      可能触发异常的语句
      except 错误类型1 [as 变量名1]:
      异常处理语句1
      except 错误类型2 [as 变量名2]:
      异常处理语句2
      except (错误类型3, 错误类型4)[as 变量3]:
      异常处理语句3
      except:
      异常处理语句other
      else:
      末发生异常语句
      finally:
      最终语句
    • 作用:
      偿试捕获异常通知,将程序由异常流程转为正常流程并继续执行
    • 说明:
      except 子句可以有一个或多个,但至少要有一个
  • 练习:
    写一个函数 get_score() 来获取学生输入的成绩(0 ~ 100) 的数,如果用户输入的不是0~100的整数则返回0,否则返回输入的整数
    如:
    def get_score():

    score = get_score()
    print(“您输入的成绩是:”, score)

  • try-finally 语句

    • 语法:

    try:
    可能触发异常的语句
    finally:
    最终语句
    说明:
    finally 子句不可以省略
    一定不在存在except 子句

    • 作用:
      1. 通常用try-finally 语句来做触发异常时必须要处理的事情,无论异常是否发生,finally子句都会被执行
      2. try-finally 语句不会改变程序的(正常/异常)状态
  • raise 语句

    • 作用:
      触发一个错误,让程序进入异常状态
      发送错误通知给调用者
    • 语法:

    raise 异常类型
    # 或
    raise 异常对象
    # 或
    raise # 重新触发上一次异常

  • 练习:
    写一个函数get_age() 用来获取一个人的年龄信息
    此函数规定用户只能输入1~140之间的整数,如果用户输入的数是其它的数值,则直接触发ValueError类型的错误!

    如 :
    def get_age():

    try:
    age = get_age()
    print(“用户输入的年龄是”, age)
    except ValueError as err:
    print(“用户输入的不是1~140的数字,获取年龄失败”)

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

    等同于:
    if bool(真值表达式) == False:
    raise AssertionError(错误数据)

  • 小结:
    异常处理相关的语句:
    try-except 语句:
    作用:
    捕获异常通知,将程序由异常状态转为正常状态
    try-finally 语句
    作用:
    执行必须要执行的语句
    raise 语句
    作用:
    触发异常(抛出异常),让程序进入异常流程
    assert 语句
    作用:
    根据条件来触发AssertionError类的异常并进入异常流程

迭代器 Iterator

  • 什么是迭代器
    迭代器是访问可迭代对象的工具
    迭代器是指用iter(obj) 函数返回的对象(实例)
    迭代器可以用next(it) 函数获取可迭代对象的数据

  • 迭代器函数:
    iter(iterable) 从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象
    next(iterator) 从迭代器iterator中获取下一个记录,如果无法获取下一条记录,则触发StopIteration异常通知

  • 说明:
    迭代器只能往前取值,不会后退

  • 示例:

L = [1, 3, 5, 7]
it = iter(L) # 让iter函数从L中获取迭代器
# it 绑定的是迭代器
print(next(it)) # 1
print(next(it)) # 3
print(next(it)) # 5
print(next(it)) # 7
print(next(it)) # StopIteration

  • 练习:
    有一个集合:
    s = {‘唐僧’, ‘悟空’, ‘八戒’, ‘沙僧’}
    用for语句遍历所有元素如下:
    for x in s:
    print(x)
    else:
    print(“遍历结束”)
    请将上面的for语句改写为while语句和迭代器实现

练习:

  1. 一个球从100米高空落下,每次落地后反弹高度为原高度的一半地,再落下,
1) 写程序算出皮球在第10次落地后反弹多高
2) 打印10次后球出共经过多少米路程
  1. 分解质因数, 输入一个正整数,分解质因数.
    如输入 : 90 则打印: 90 = 233*5
    (质因数是指最小能被原数整除的素数(不包括1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值