课程 2:控制结构

  1. 三大控制结构:
    • 顺序结构:代码从上到下,自左而右的顺序执行;
    • 分支结构:当程序执行到控制分支的语句时,首先判断条件,根据条件表达式的值选择相应的语句执行;
    • 循环结构:当程序执行到循环控制语句时,根据循环判定条件对一组语句重复执行多次。
  2. 顺序结构: 顺序结构是程序中最基本的控制结构,指程序按照代码的先后顺序,从上到下、从左到右依次执行每一条语句。
    • 没有条件判断和跳转,所有语句都会被依次执行。
    • 是所有程序的基础,其他结构(如分支、循环)也常包含顺序结构。
        a = 1
        b = 2
        c = a + b
        print(c)

    上述代码会依次执行每一行,最终输出 3

  3. for循环: for 循环是一种用于已知重复次数或可迭代对象的循环结构,适合遍历序列、集合等。
    • 常用于:需要对每个元素、每个数字、每个对象依次操作的场景。
    • 循环次数通常是确定的。
        for 变量 in 可迭代对象:
            # 循环体
            要重复执行的语句
                    

    示例:

         for i in range(5):
            print(i)
                    

    上述代码会输出0到4,共5次。每次循环,变量 i 依次取值。

    区别: for 循环适合已知次数或遍历对象,while 循环适合次数不确定、依赖条件的重复。

  4. 循环的前置条件与后置条件:编写循环时最复杂的地方之一,就是你需要确保循环结束时世界的状态(后置条件)能够满足下一次循环开始时的要求(前置条件)。
    • 前置条件:在每次循环前先判断条件,只有条件为真才会执行循环体;
    • 后者条件:先执行一次循环体,然后判断条件,条件为真则继续循环。
  5. 嵌套循环: 嵌套循环是指在一个循环体内再包含另一个循环。常用于处理二维结构(如棋盘、表格等),可以让程序对每一行的每一列都进行操作。
    • 外层循环控制行,内层循环控制列。
    • 常见应用:遍历二维数组、绘制图形、处理网格等。
        for i in range(3):
            # 外层循环,控制行
            for j in range(4):
                # 内层循环,控制列
                print(i, j)
                        

    上述代码会输出所有行列组合(共3×4=12次),即遍历一个3行4列的表格。

  6. while循环: while 循环是一种基于条件判断的循环结构,适用于循环次数不确定、需要根据某个条件反复执行的场景。
    • 每次循环前先判断条件,条件为真则执行循环体,否则结束循环。
    • 常用于:直到满足某个条件才停止的任务,如遇到障碍、收集完所有物品等。
        while 条件:
            # 循环体
            要重复执行的语句

    示例:

        count = 0
        while count  < 5:
        print(count)
            count += 1
                    

    上述代码会输出0到4,共5次。只要条件 count < 5 成立,就会继续循环。

    区别: for 循环适合已知次数的重复,while 循环适合次数不确定、依赖条件的重复。

  7. 栅栏柱错误: 栅栏柱错误(Fencepost Error),也叫“边界错误”或“off-by-one error”,是指在循环或计数时多算或少算了一次,常见于处理区间、数组下标等场景。
    • 常见原因:循环次数写错、区间端点包含/不包含混淆。
    • 例如:要在两端插柱子,柱子数比栅栏段数多1。
        # 例:打印1到10的所有整数
        for i in range(1,10):
            print(i)
        # 实际只输出1到9,漏掉了10

    避免方法:明确循环的起止条件,理解 range 的左闭右开特性,必要时多画图或举例验证。

  8. 条件语句: 条件语句用于根据不同的条件执行不同的代码分支,是实现程序逻辑判断的基础。
    • 常用关键字:ifelifelse
    • 根据条件表达式的真假,选择性地执行某些语句。
        if 条件1:
            # 条件1为真时执行
        elif  条件2:
            # 条件2为真时执行
        else :
            # 以上条件都不满足时执行

    示例:

        score = 85
        if score >= 90:
            print("优秀")
        elif score >= 60:
            print("及格")
        else:
            print("不及格")
                

    上述代码会根据分数输出不同的评价,实现了分支选择。

  9. match语句: match 语句是 Python 3.10 及以上版本引入的结构化模式匹配语句,类似于其他语言的 switch/case,但功能更强大。
    • 可以根据变量的不同值或结构,选择性地执行不同的代码块。
    • 支持对复杂数据结构(如元组、列表、字典等)进行模式匹配。
        match 变量:
            case 值1:
                # 变量等于值1时执行
            case 值2:
                # 变量等于值2时执行
            case _:
                # 其他情况

    示例:

        command = "start"
        match  command:
            case "start":
                print("启动程序")
            case "stop":
                print("停止程序")
            case _:
                print("未知命令")

    上述代码会根据 command 的值输出不同内容,实现了多分支选择。

  10. Karel编程中我们只使用if/else语句。
    作业2:修复拱桥