• python | 控制流语句-顺序结构与分支结构


     

    1 程序流程图

    程序流程图是指用一系列图形、流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式。流程图基本元素共有7种,其中,连接点将多个流程图连接在一起,常用于将较大的流程图分隔为若干部分。

     

    2 条件表达式

    2.1 定义

    条件表达式也称为「三元表达式」,只要条件表达式的值不为0、False、空值,python均认为与True等价,python中所有的合法表达式,都可以看做条件表达式。

     

    2.2 格式

    条件表达式有两种语法格式 :

    • 格式1:x if condition else y ,判断为True返回值x,判断为False返回值y
    • 格式2:(x, y)[condition] , 判断为True返回值x,判断为False返回值y
    a = eval(input('请输入一个数字'))     # 格式1
    1 if a > 0 else 0
    
    b = eval(input('请输入一个数字'))     # 格式2
    (0, 1)[b > 0]
    

     

    2.3 运算符

    条件表达式中可以使用多种运算符,且运算符可以级联使用,常见的有:

    • 算术运算符:+、-、*、/、//、%、**
    • 关系运算符:<、>、<=、>=、==、!=
    • 测试运算符:in、not in、is、is not
    • 逻辑运算符:and、or、not(注意惰性原则)
    • 位运算符:~、&、|、^、《、》
    • 矩阵乘法运算符:@

    但需要特别注意的是,条件表达式中,不能有赋值操作符(=)

     

    3 程序基本结构

    程序的基本结构共有三种,「任何程序都可以由这三种基本结构组合来实现」。

    • 顺序结构
    • 分支结构
    • 循环结构

     

    3.1 顺序结构

    顺序结构是程序按照线性顺序,依次执行的一种运行方式,运行过程见下图。

     

    3.2 分支结构

    分支结构又称「选择结构」,是根据条件判断结果,而选择不同向前执行路径的一种运行方式,具体的,分支结构可以细分为单分支、双分支、多分支和巢状分支。

     

    3.2.1 单分支

    单分支只有一个if,没有else:

    • 区间:语句块在if条件表达式为True时才执行,所以又叫「真区间
    • 执行逻辑:if条件判断为True,执行语句块,反之不执行
    # 单分支结构示例
    # 任意输入两个数,按从小到大排列
    a = eval(input('请输入第一个数'))
    b = eval(input('请输入第二个数'))
    if a > b:
        a, b = b, a   # 序列解包,交换两个变量的值
    print(a, b)
    

     

    3.2.2 双分支

    双单分支有一个if、一个else:

    • 区间:真区间(if区间)、假区间(else区间)
    • 执行逻辑:if判断为True,执行真区间;if判断为False,执行假区间
    • 简写格式:双分支结构可以简写为:语句块1 if 条件判断 else 语句块2(类似三元表达式)。if条件判断为True,执行语句块1;条件判断为False,执行语句块2
    # 双分支结构
    # 任意输入两个数,按从小到大排列
    a = eval(input('请输入第一个数'))
    b = eval(input('请输入第二个数'))
    if a > b:
        print(b, a)
    else:
        print(a, b)
    
    # 双分支结构简写
    # 任意输入两个数,按从小到大排列
    a = eval(input('请输入第一个数'))
    b = eval(input('请输入第二个数'))
    print(b, a) if a > b else print(a, b)
    

     

    3.2.3 多分支

    多个双分支组合就组成了多分支,它有多个if、一个else:

    • 区间:有无限多个真区间(if区间),一个假区间(else区间)
    • 执行逻辑:多分支中可以有无限个elif分支,但只执行一个elif,一旦一个elif分支执行结束,后面的所有分支既不会判断也不会执行
    # 多分支结构
    # 将成绩从百分制变换到等级制
    socre = eval(input('请输入你的成绩'))
    if socre > 100:
        print('成绩必须小于100分,请重新输入')
    elif socre >= 90:
        print('A')
    elif socre >= 80:
        print('B')
    elif socre >= 70:
        print('C')
    elif socre >= 60:
        print('D')
    elif socre >= 0:
        print('E')
    else:
        print('成绩必须大于0分,请重新输入')
    

     

    3.2.4 巢状分支

    ​巢状分支也叫分支结构嵌套,通常由多个不同种类的分支结构嵌套而成。如上所示,就是一个典型的巢状分支,共有3层,由单分支、双分支、多分支嵌套而成。

    • 区间:可以有多个真区间(if区间),多个假区间(else区间)

    • 执行逻辑:从外到内,自上而下依次判断执行

    # 将成绩从百分制变换到等级制
    socre = eval(input('请输入你的成绩'))
    if socre > 100 or socre < 0:
        print('输入不正确,请重新输入')
    else:
        if socre >= 90:
            print('A')
        elif socre >= 80:
            print('B')
        elif socre >= 70:
            print('C')
        elif socre >= 60:
            print('D')
        else:
            print('E')
    
  • 相关阅读:
    codeforces 37 E. Trial for Chief【spfa】
    bzoj 1999: [Noip2007]Core树网的核【树的直径+单调队列】
    codehunter 「Adera 6」杯省选模拟赛 网络升级 【树形dp】
    codeforces GYM 100781A【树的直径】
    bzoj 2878: [Noi2012]迷失游乐园【树上期望dp+基环树】
    bzoj 1791: [Ioi2008]Island 岛屿【基环树+单调队列优化dp】
    codeforces 949C
    codeforces 402E
    poj 3613 Cow Relays【矩阵快速幂+Floyd】
    bzoj 2097: [Usaco2010 Dec]Exercise 奶牛健美操【二分+树形dp】
  • 原文地址:https://www.cnblogs.com/1k-yang/p/12090334.html
Copyright © 2020-2023  润新知