• part4-1 流程控制一(if分支结构、断言)


    Python 中两种流程控制结构:分支结构和循环结构。
    分支结构:根据条件选择性的执行某段代码。由 if 语句提供分支支持。
    循环结构:根据循环条件重复执行某段代码。由 while、for-in 语句提供。
    控制循环结构的语句:break 和 continue。

    顺序结构:程序从上到下一行一行地执行,中间没有任何判断和跳转。

    一、 if 分支结构

    if 分支的控制条件是布尔表达式或布尔值。if 分支可作为语句使用,也可作为表达式使用。if 语句常用三种形式。
    第一种形式,单个条件判断:
    if expression :
    statements ...
    第二种形式,if-else判断:
    if expression :
    statements ...
    else:
    statements ...
    第三种形式,多个条件判断 if-elif-...-else:
    if expression :
    statements ...
    elif expression :
    statements ...
    ... # 可以有 0 条或多条 elif 语句
    else:
    statements ...

    在第二种形式和第三种形式中,如果第三种形式的 elif 语句块不出现,就是第二种形式。

    在 if 的分支语句中,如果 if 的条件为“真”,就执行 if 条件后面的多条语句;否则会依次判断 elif 条件(如果有的话),如果 elif 条件为“真”,就执行 elif 条件后面的多语句,......;如果前面的所有条件都为假,就执行 else 后面的代码块(如果有话)。在多条语句中,以缩进作为代码块(缩进通常以4个空格为单位),一个代码块当成一个整体来运行(除非在运行代码块的过程中遇到return、break、continue等关键字),这个代码块也被称为条件执行体。

    1、 注意缩进
    Python中是以缩进作为代码块的,要注意缩进,如果不缩进就不是代码块。另外,缩进的空格数量建议是4个,当然也可以是其它数量的空
    格,也可以是1个 tab 键位。

    不正确使用缩进的话,程序的运行结果可通会超出预期。

    在同一个代码块内必须保持相同的缩进,既不能多、也不能少。

    另外,在不使用代码块的地方,不要随意使用缩进,否则程序会报错。

    2、 注意冒号
    Python 冒号表示代码块的开始点,在条件执行体、循环体、函数体、类体中都要遵守该规则。结束点在与开始点的语句有相同缩进的位置。

    3、 if 条件的类型
    Python 执行 if 语句时,会判断 if 条件是 True 还是 False。if 的条件不是只能用 bool 类型表达式,if 条件可以是任意类型,当下面这些值作为 bool 表达式时,会被解释器当作 False 处理。
    False、None、0、""、()、[]、{}
    除了 False 本身,各种代表“空”的 None、空字符串、空元组、空列表、空字典都会被当成 False 处理。示例如下:
     1 s = ""      # 定义一个空字符串
     2 if s:         # if 条件使用字符串类型
     3     print('s 不是空字符串')
     4 else:
     5     print('s 是空字符串')
     6 my_list = []      # 定义一个空列表
     7 if my_list:         # if 条件使用列表类型
     8     print('my_list 不是空列表')
     9 else:
    10     print('my_list 是空列表')
    11 my_dict = {}      # 定义一个空字典
    12 if my_dict:          # if 条件使用字典类型
    13     print('my_dict 不是空字典')
    14 else:
    15     print('my_dict 是空字典')

    4、 if 分支的逻辑错误
    要注意 if 分支中的逻辑判断顺序,使用正确的逻辑判断顺序,避免产生预期之外的结果。对于任何 if-else 或者 if-elif-else 语句中,else 的隐含条件是对前面条件取反。示例如下:
    1 age = 50
    2 if age > 20:
    3     print("青年人")
    4 elif age > 40:
    5     print("中年人")
    6 elif age > 60:
    7     print("老年人")

    上面这段代码输出的结果是 “青年人”,没有输出预期的结果“中年人”。这里逻辑判断没有错,但是逻辑判断的顺序不对。在 if 分支语句中,只要前面的一个条件满足,就会不再执行后面的条件,所以这里执行了第一个 if 语句,后面的 elif 语句不会执行。所以在做逻辑判断时,应先判断条件范围小的,再判断条件范围大的。修改的示例如下:
    1 age = 50
    2 if age > 60:
    3     print("老年人")
    4 elif age > 40:
    5     print("中年人")
    6 elif age > 20:
    7     print("青年人")

    现在的输出结果是“中年人”,输出在预期之内,逻辑判断的顺序是非常重要的。

    5、pass 语句
    pass 是Python 中的空语句。在程序中占一个位置,但不希望这条语句做任何事情,就放一条 pass 语句。pass 语句可以让程序更完善。

    二、 断言

    断言(assert)语句和 if 分支有点类似,用于对一个 bool 表达式进行断言,如果该 bool 表达式为 True,该程序可以继续向下执行;否则程序引发 AsertionError 错误。示例如下:
    age = int(input("请输入年龄:"))
    assert 20 < age < 80
    print("你的年龄在20到80之间")

    运行上面的代码,输入一个20到80之间的数正常输出,若输入的数不在这个范围,则报 AssertionError 错误。

    断言是一种特殊的分支结构,assert 断言执行的逻辑是:
    if 条件为False:
    程序引发 AssertionError 错误
  • 相关阅读:
    Python正课48 —— 匿名函数及其应用
    Python正课47 —— 面向过程编程思想
    Python正课46 —— 二分法
    Python正课45 —— 函数的递归调用
    Python正课44 —— 生成式
    Python正课43 —— 三元表达式
    SQL数据库操作命令大全
    css 高度写死 下滚动时ios 滚动不协调处理
    记录:js删除数组中某一项或几项的几种方法
    本次存储存数组对象
  • 原文地址:https://www.cnblogs.com/Micro0623/p/11526142.html
Copyright © 2020-2023  润新知