第四章_流程控制 - 图1

第四章_流程控制

模块与包

模块

在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。

包,通常总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是 init.py。然后是一些模块文件和子目录,假如子目录中也有 init.py 那么它就是这个包的子包了。

  • import 包名#文件名不需要写后缀.py

    • import 包名 as 别名#下方引用时可以用别名.函数名()

      Python有丰富的他人写好的模块、包供调用,以迅速解决特定问题

      只需要明白有什么函数、如何调用

      range函数、arange函数

      range函数

      range(start,end[,step]) ->range object

      函数类似切片左闭右开,step控制跳跃间距,默认为1,step不能是float

  • step(0,5)等价于step(0,5,1)

    函数返回一个range object

  • range函数是一个容器,不再返回列表,可通过list()、tuple()转化为列表或元组

    例子:

  • r1 = range(1,5,2)

    • 代表从1到5,间隔2(不包含5),若步长为1也可以省略步长,如r_2

      • 1,3
  • r_2 = range(1,5)
    • 代表从1到5(不包含5),若从0开始,也可以省略start,如r_3

      • 1,2,3,4
  • r_3 = range(5)

    • 代表从0到5(不包含5)

      • 0,1,2,3,4

        arange函数

        生成小数序列用,该函数需导入numpy包

        arange([start,]end[,step,],dtype=None)

        例子:

  • import numpy as npar_1 = np.arange(1,2,0.2)ar_1

    流程控制

    程序流程图

    概念

  • 一种表达程序控制结构的方式,主要用于关键部分的程序分析和过程描述。由一系列图形、流程线和文字说明组成

    7种元素

  • 起止框

    • 表示程序逻辑的开始或结构
  • 处理框
    • 表示一组处理过程,对应于顺序执行的程序逻辑
  • 判断框
    • 表示一个判断条件,根据判断结果选择不同执行路径
  • 输入输出框
    • 表示程序种的数据输入或结果输出
  • 注释框
    • 表示程序的注释
  • 流向线
    • 表示程序的控制流,以带箭头的直线或曲线表达程序的执行路径
  • 连接点

    • 表示多个流程图的连接方式,常用于将多个较小流程图组织成较大流程图

      程序控制结构

      三种基本结构

  • 顺序结构

    • 线性顺序
  • 分支结构(逻辑结构)
    • 概念
      • 根据条件判断结果而选择不同方向向前执行的一种运作方式
    • 种类
      • 单分支结构
        • if 条件: 语句块
        • 条件为产生True或False的语句,结果为True执行,False则跳过语句块。语句块可以是多条语句。
      • 多分支结构
        • 条件成立做事件A,条件不成立都不做
        • if 条件表达式1:<缩进>事件Aelif 条件表达式2:<缩进>事件Belif 条件表达式3:<缩进>事件C……….else:<缩进>事件N
          • 注意同一逻辑下语句缩进相同
          • else子句可选
        • 列表推导式(条件表达式)
          • 列表名 = [x for x in data]
            • 遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表
          • 列表名 = [x for x in data if condition]
            • for遍历每层循环紧跟着进行条件判断
          • 列表名 = [exp1 if condition else exp2 for x in data]
            • for遍历循环判断符合if后条件表达式则结果exp1,不符合则exp2
        • 字典推导式
        • 集合推导式
    • 多个条件逻辑组合
      • and
        • 多个条件“与”
          • 多个条件都满足才True,有一条不满足则False
      • or
        • 多个条件“或”
          • 任意一个满足则True,都不满足则False
      • not
        • 单个条件“否”
  • 循环结构

    • 概念
      • 根据条件判断结构向后执行(回到前面的步骤)的运行方式
    • 种类
      • while循环
        • true时循环,否则退出循环
        • while 判断条件:<缩进>代码块
      • for循环
        • 常用于遍历序列(list、tuple、string、range)、集合(set)和映射对象(dict)。字符串、文件、range()函数也是可迭代对象
          • 注意range()函数左闭右开
            • range(5)即0到4的索引范围遍历
        • for <临时变量> in 可迭代对象:<缩进>代码块
        • for i in range(start,stop[,step])
          • for i in range(stop)
        • 扩展结构
          • for-else结构
            • for循环正常执行完成之后执行else中内容
            • for <临时变量> in 可迭代对象:<缩进>代码块else:<缩进>代码块
      • 循环控制语句
        • break
          • 终止整个循环
          • 如果是双层嵌套的循环,只会跳出最近的那个循环
          • break退出循环后,else语句不再执行
        • continue
          • 跳过本次循环后续语句,执行下一次循环
        • pass
          • pass语句为空语句,无特殊含义,只为保持程序结构完整性。也可用于分支语句中

            程序控制结构的扩展

  • 程序的异常处理

    • try…except语句
      • 2个循环控制符
        • break
          • 结束当前循环
        • continue
          • 结束当前循环的当次循环过程
    • try: blockexcept(Exception) as e: blockexcept Keyerror as e: block except Nameerror as e: block else: blockfinally: block
        1. as 子句是用于绑定错误对象的变量,可以省略
        1. except 子句可以有一个或多个,但至少要有一个. 一般的需要写清楚需捕获异常的类型,见上面的常见错误异常链接, 定制什么类型异常,能捕获相应的异常,但是没有指定的异常的话还是会报错的。 不过有一个万能异常:Exception
        1. else子句最多只能有一个,也可以省略不写. else子句的语句将在此try语句没有发生异常时被执行
        1. finally子句最多只能有一个,也可以省略不写. finally子句的语句在任何情况下都会被执行