十三、程序流程控制

十三、程序流程控制

(1)程序流程控制介绍

程序流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句

  1. 顺序控制
  2. 分支控制
  3. 循环控制

(2)顺序控制

  • 顺序控制介绍

    程序从上到下逐行地执行,中间没有任何判断和跳转

(3)分支控制if-else

  • ·分支控制if-else介绍

    让程序有选择的的执行,分支控制有三种:

    1. 单分支

      • 基本语法

        单分支是通过if语句来实现的,if语句的基本语法如下:

        if条件表达式:
        代码块(可以有多条语句)

      • if基本语法说明

        1. 当条件表达式为True时,就会执行代码块;如果为False,就不执行

        2. Python缩进非常重要,是用于界定代码块的,相当于其他编程语言里的大括号{}

        3. 最短的缩进对较长的有包含关系,缩进前后没有要求,但是每个代码块应具有相同的缩进长度(TAB或者相同个数的空格)

          if 100 > 20:
              print("okf")
              print("ok5")
              if 8 > 2:
                  print("ok6")
          
        4. 小结:可以看出,和其它语言对比:其它语言的代码块是用{}表示的,python缩进就代替了{}

        #请编写一个程序,可以输入人的年龄,如果该小伙伴的年龄大于18岁,#则输出“你年龄大于18,要对自己的行为负责!"
        """
        思路分析:
        1.定义变量age,接收用于输入(注意要转成整数)
        2.使用i判断即可
        """
        age=int(input("请输入小伙伴的年龄:"))
        if age > 18:
            print("你年龄大于18,要对自己的行为负责!")
        

      image-20260702192008131

    2. 双分支

      • 基本语法

        if条件表达式:
        执行代码块1
        else:
        执行代码块2

      • if-else基本语法说明

        1. if、else是关键字,是规定好的
        2. 当条件表达式成立,即执行代码块1,否则执行代码块2,注意,不要少写了冒号:
      • ·应用实例

        age=int(input("请输入小伙伴的年龄:"))
        if age > 18:
            print("你年龄大于18,要对自己的行为负责!")
        else:
            print("你的年龄不大,这边就放过你了")
        

      image-20260702192337670

    3. 多分支

      • 基本语法

        if条件表达式1:
        执行代码块1
        elif 条件表达式2:

        ​ 执行代码块2

        ```````

        else:
        执行代码块n+1

      image-20260702194008296

      执行流程说明

      1. 当条件表达式1成立时,即执行代码块1
      2. 如果表达式1不成立,才去判断表达式2是否成立
      3. 如果表达式2成立,就执行代码块2
      4. 以此类推,如果所有的表达式都不成立则执行else的代码块
      5. 只能有一个执行入口

(4)嵌套分支

  • 基本介绍
    1. 嵌套分支:在一个分支结构中又嵌套了另一个分支结构
    2. 里面的分支的结构称为内层分支,外面的分支结构称为外层分支
    3. 规范:不要超过3层(可读性不好)
# @File    : 03_nested_if_example.py
# @Time    : 2026/7/3 15:11
# 参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。
# 并且根据性别提示进入男子组或女子组。【可以让学员先练习下】,输入成绩和性别,进行判断和输出信息。

score = float(input("请输入成绩:"))


if score > 8.0:
    print("进入决赛")
    gender = input("请输入性别:")
    if gender == "男":
        print("进入男子组比赛")
    else:
        print("进入女子组比赛")
else:
    print("淘汰")
    
    
    
''''
出票系统:根据淡旺季的月份和年龄,打印票价[课后练习]4-10旺季:
成人(18-60):60
儿童(<18):半价
老人(>60):1/3
淡季:
成人:40
其他:20
'''
mouth = int(input("请输入月份:"))
age = int(input("请输入年龄:"))

if 4 <= mouth <= 10:
    if age < 18:
        print("票价是30")
    elif 18 <= age < 60:
        print("票价是60")
    else:
        print("票价是20")
else:
    if 18 <= age < 60:
        print("票价是40")
    else:
        print("票价是20")

(5)for循环控制

  • for循坏-基本介绍

    for循环听其名而知其意,就是让你的代码可以循环的执行,是通过for语句来实现的.

  • for语句-基本语法

    for<变量>in〈范围/序列>:

    ​ <循环操作语句>

  • for基语法说明

    1. for、in是关键字,是规定好的
    2. <范围/序列>可以理解要处理的数据集,需要是可迭代对象(比如字符串,列表等..)
    3. 循环操作语句,这里可以有多条语句,也就是我们要循环执行的代码,也叫循环体
    4. 、python的for循环是一种"轮询机制",是对指定的数据集,进行"轮询处理"
  • 画出流程图

image-20260703153123761

  • 代码执行内存分析法图

    image-20260703154342024

  • 注意事项和细节说明

    1. 循环时,依次将序列中的值取出赋给变量

    2. 如需要遍历数字序列,可以使用内置range()函数,它会生成数列。range()生成的数列是前闭后开

      range函数的解读

      class range(stop)

      class range(start, stop, step=1)

      1. 虽然被称为函数,但range实际上是一个不可变的序列类型
      2. .range默认增加的步长step是1,也可以指定,start默认是0
      3. 通过list()可以查看range()生成的序列包含的数据
      4. range()生成的数列是前闭后开
      # 1.需求:生成一个[1,2,3,4,5]
      # r1 = range(1, 6, 1)
      r1 = range(1, 6)
      print(list(r1))
      # 2.需求:生成一个[0,1,2,3,4,5]
      # r2 = range(0,6,1)
      r2 = range(6)
      # 3.需求:生成一个[1,3,5,7,9]
      r3 = range(1, 10, 2)
      print(list(r3))
      # 4.需求 使用for+range方式输出10句"hello,python"
      
      for i in range(10):
          print("hello,python")
      
    3. for 可以和else配合使用

      • 语法格式

        for in :

        else:

      解读:什么情况下会进入到else,就是for循环正常的完成遍历,在遍历过程中,没有被打断(解释:比如没有执行到break语句)

(6)while循环控制

  • 基本介绍

    while循环用于在表达式为真的情况下,重复的(循环的)执行,是通过white语句来实现的.

  • while语句-基本语法

    while判断条件(condition):
    循环操作语句(statements)......

  • while基本语法说明

    1. while是关键字,是规定好的
    2. 当判断条件为True时,就执行循环操作语句,如果为False,就退出while
    3. 循环操作语句,这里可以有多条语句,也就是我们要循环执行的代码,也叫循环体
  • while循环控制流程图

    image-20260703162116738

  • 注意事项和细节

    1. while 可以和 else 配合使用

    2. 语法格式

      语法格式

      while判断条件(condition):
      循环操作语句(statements).......
      else:
      其它语句<additional_statement(s)>

      解读:在while...else判断条件为false时,会执行else的语句块,即:在遍历过程中,没有被打断(解释:比如没有执行到break语句)

      # @File    : 05_while_01.py
      # @Time    : 2026/7/3 16:19
      i = 0
      while i < 3: 
          print("你好,韩顺平教育", i)
          i += 1
      else:
          print("i<3不成立 i=", 1)
      

(7)多重循环控制

  • 基本介绍

    1. 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while均可以作为外层循环和内层循环。【建议般使用两层,最多不要超过3层,否则,代码的可读性不好】

      image-20260703170827097

    2. 实质上,嵌套循环就是把内层循环当成外层循环的循环体。

    3. 如果外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次

  • 经典的打印金字塔

    • 使用for循环完成下面的案例

      请编写一个程序,可以接收一个整数,表示层数(total_level),打印出空心金字塔。【化繁为简,先死后活】

      image-20260703172027996

      # @File    : 07_multiply_for.py
      # @Time    : 2026/7/3 17:10
      # 请编写一个程序,可以接收一个整数,表示层数(total_Level),打印出空心金字塔
      """
      思路分析
      先死后活
      1.先不考虑层数的变化,一假定就是5层,后面做活
      化繁为简1.打印矩形
      2.打印直角三角形
      3.打印金字塔
      4.打印空心金字塔
      """
      
      # i控制层数
      # for i in range(1, 6):
      #     # j控制每层输出的*号个数
      #     for j in range(1, 6):
      #         # 这里end="" 表示输出不换
      #         print("*", end="")
      #     # 每层输出后,换行
      #     print("")
      
      # for i in range(1,6):
      #     # j控制每层输出的*号个数
      #     for j in range(i):
      #         # 这里end="" 表示输出不换
      #         print("*", end="")
      #     # 每层输出后,换行
      #     print("")
      
      # for i in range(1, 6):
      #     # k控制输出的空格数
      #     for k in range(5 - i):
      #         print(" ", end="")
      #     # j控制每层输出的*号个数
      #     for j in range(2 * i - 1):
      #         # 这里end="" 表示输出不换行
      #         print("*", end="")
      #     # 每层输出后,换行
      #     print("")
      
      # 总层数
      total_level = int(input())
      for total_level in range(1, 6):
          # k控制输出的空格数
          for k in range(5 - total_level):
              print(" ", end="")
          # j控制每层输出的*号个数
          for j in range(2 * total_level - 1):
              # 这里end="" 表示输出不换行
              if j == 0 or j == 2 * (total_level - 1) or total_level == 5:
                  print("*", end="")
              else:
                  print(" ", end="")
          # 每层输出后,换行
          print("")
      

(8)break语句

  • 基本介绍

    break语句用于终止某个语句块的执行,使用在循环中

  • 基本语法

    break

  • break语句流程图

    image-20260704104010574

  • 快速入门

    完成前面需求:随机生成1-100的一个数,直到生成了97这个数,看看你一共用了几次?

    # 完成前面需求:随机生成1-100的一个数,直到生成了97这个数,看看你一共用了几次?
    import random
    
    count = 0
    while True:
        # 生成随机数
        n = random.randint(1, 100)
        count += 1
        if n == 97:
            break
    
    print(f"一共使用了{count}次")
    
  • 注意事项和细节

    1. break 语句是用在for或while循环所套的代码

    2. 它会终结最近的外层循环,如果循环有可选的else子句,也会跳过该子句

      # @File    : 11_break_detail.py
      # @Time    : 2026/7/4 10:46
      count = 0
      while True:
          print("hi while")
          count += 1
          if count == 3:
              break
          while True:
              print("OK while")
              break
      else:
          print("Hello, while")
      
    3. 如果一个for循环被break所终结,该循环的控制变量会保持其当前值

      nums = [1, 2, 3, 4, 5, 6]
      for i in nums:
          if i > 3:
              break
      print("i=", i)  # i = 4
      

(9)continue

  • 基本介绍

    1. continue语句用于for或while循环所嵌套的代码中
    2. continue语句用于结束本次循环,继续执行循环的下一个轮次
    3. 老韩说明:继续执行的是:该continue最近的外层循环的下一个轮次
  • 基本语法

    ``````

    continue

    ``````

  • 流程图

    image-20260704145459266

(10)return语句

  • 基本介绍
    1. return使用在函数,表示跳出所在的函数
posted @ 2026-07-04 15:19  尘白  阅读(0)  评论(0)    收藏  举报