Python2 - 流程控制
2026/9/6 3:28:31 网站建设 项目流程

摘要:

本文系统讲解 Python 程序执行的三大结构:顺序结构、分支结构和循环结构。

其中分支结构涵盖 if 条件判断与 match_case 模式匹配,循环结构涵盖 while 循环、for 循环及 range 语句,并通过登录验证、猜数字、九九乘法表等实战案例,帮助读者掌握条件判断与循环控制的核心用法。

目录

一、程序执行结构

二、if条件判断

三、match_case模式匹配

四、循环

1、while循环

2、for循环

3、循环进阶案例

总结


一、程序执行结构

程序执行结构主要分为三种:

二、if条件判断

应用场景:条件判断涉及复杂的逻辑判定、范围比较及组合条件时。

语法

if 要判断的条件1: 条件成立时, 要执行的操作1 elif 要判断的条件2: 条件成立时,要执行的操作2 elif 要判断的条件3: 条件成立时,要执行的操作3 else: 所有条件不成立时, 要执行的操作4

接下来是一些示例

# 1、if_elif_else条件匹配 # 提示用户输入账号密码,判断是否登录成功 account = input("请输入账号:") password1 = input("请输入密码:") if account == "18888888888" and password1 == "66668888": print("登录成功~") print("进入首页") else: print("登录失败") print("账号或密码错误,请重新输入") # tab缩进,shift+tab取消缩进 # 根据用户输入的年份,判断是闰年还是平年 year = int(input("请输入要判断的年份:")) if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: print(f"{year}年,是闰年") print(f"{year}年,是平年") # else省略不写时,条件不成立时执行的代码就要取消缩进,与if同级 # 根据用户输入的数字,判断该数是正数,还是负数,还是0? num = float(input("请输入要判断的数字:")) if num > 0: print(f"{num}是 正数") elif num < 0: print(f"{num}是 负数") else: print(f"{num}是 0") # 用户名、密码为 admin/666888 或 root/547527 或 zhangsan/123456,则输出登录成功。否则就提示用户名或密码错误 username = input("请输入用户名:") password = input("请输入密码:") if username == "admin" and password == "666888": print(f"{username}登录成功") elif username == "root" and password == "547527": print(f"{username}登录成功") elif username == "zhangsan" and password == "123456": print(f"{username}登录成功") else: print("用户名或密码错误,请重新输入") # if嵌套的案例: 三角形类型判断:根据输入的三个边的边长(正整数),判定是等边三角形、等腰三角形、普通三角形 ,还是不能构成三角形。 # 1. 构成三角形的条件:任意两边之和大于第三边。2. 三角形判定规则:三个边都相等->等边三角形; 两个边相等->等腰三角形; 三个边都不相等->普通三角形 s1 = int(input("请输入三角形的第一个边长(必须是正整数):")) s2 = int(input("请输入三角形的第二个边长(必须是正整数):")) s3 = int(input("请输入三角形的第三个边长(必须是正整数):")) if s1 + s2 > s3 and s1 + s3 > s2 and s2 + s3 > s1: if s1 == s2 == s3: print("是等边三角形") elif s1 == s2 or s1 == s3 or s2 == s3: print("是等腰三角形") else: print("是普通三角形") else: print("输入的三边无法构成三角形")

注意

  1. 判断语句的结果,必须是布尔类型True或False。如果为 True 会执行if内的代码,False则不会执行。
  2. elif 必须出现在if之后,不能独立存在。 if 之后可以有elif,可以没有,也可以有多个elif。 最后的else,也是可有可无的。

三、match_case模式匹配

模式匹配就是用一个清晰的模板去精准的匹配数据的结构和内容,匹配成功则执行相应的操作。

应用场景:基于某个变量的多个固定值进行分支判断时。

语法

match 表达式: case 值1: 如果表达式的值为值1, 执行的操作1 case 值2: 如果表达式的值为值2, 执行的操作2 case 值3: 如果表达式的值为值3, 执行的操作3 case 值4 | 值5 | 值6: 如果表达式的值为值4、值5、值6的其中一个, 执行的操作4 case _: 如果前面都没有匹配上, 执行该操作

执行流程:

  1. 首先计算 match 指定的表达式的值
  2. 从上到下依次和case后面的值进行匹配,匹配正确,就执行对应的语句
  3. 如果前面所有的case都没有匹配上,就会执行默认的case _

示例

# 2、match_case模式匹配 # 判断是星期几 day = input("请输入星期几(1~7):") match day: case "1": print("周一") case "2": print("周二") case "3": print("周三") case "4": print("周四") case "5": print("周五") case "6" | "7": print("周末") case _: print("输入有误,不是星期") # 实现一个计算器,可以实现+ - * / % 运算,用户输入需要运算的两个数以及运算符之后,就可以进行计算。 num1 = float(input("请输入第一个运算数:")) num2 = float(input("请输入第二个运算数:")) oper = input("请输入运算符(+ - * / %):") match oper: case "+": print(f"{num1}+{num2}={num1 + num2}") case "-": print(f"{num1}-{num2}={num1 - num2}") case "*": print(f"{num1}*{num2}={num1 * num2}") case "/" if num2!=0: # 除数不能为零 print(f"{num1}/{num2}={num1 / num2}") case "%" if num2!=0: print(f"{num1}%{num2}={num1 % num2}") case _: print(f"暂不支持{oper}运算符操作")

注意

四、循环

1、while循环

while循环是通过条件表达式,来控制是否要进行下一次循环的。如果条件表达式为True,则执行循环体中的语句;如果条件表达式为False,则结束循环。

应用场景:用于在某个条件满足时一直循环,循环的次数通常是未知的,只知道循环开始/结束的条件。(关注的是循环的条件

语法

while 条件表达式: 条件成立时执行的代码 ...... else: # else可有可无 条件为False,循环正常结束时执行

示例

# 3、while循环(无限循环) # 循环打印10次:人生苦短,我用python~~ # (1)定义循环因子 index(索引、下标)-->i i = 0 # (2)设置循环条件 while i<10: # (3)执行循环代码 print("人生苦短,我用python~~") # (4)修改循环因子 i += 1 else: print("循环结束") # 计算1-100之间所有偶数的累加之和 total = 0 i = 1 while i <= 100: if i % 2 == 0: total += i # print(i) i += 1 print(f"1-100之间所有偶数的累加和为 {total}")

2、for循环

for循环,本质是一种轮询遍历机制,可以对一批内容进行逐个处理。

应用场景:用于对一个已知的数据集进行遍历或已知次数的循环。(关注的是遍历每一个元素

语法

for 元素(临时变量) in 待处理数据集: 对元素进行处理的循环体代码 ... else: # else可有可无 循环结束时, 执行的代码

示例

# 4、for循环(固定次数循环、数组循环) for i in "Hello World~~": print(i, end="") # 默认打印一个元素之后就换行;end改为空,打印一个元素之后就是空字符串 else: print() # 恢复打印完后就换行 print("循环结束") # 5、range语句:内置函数 range() 用于生成等差数列(指一组按特定规律排列的数字) # 语法:for i in range(start, end, step) --> start(开始)省略默认为0,不含end(结束)本身,step(步长)省略默认为1 # 计算 1 - 100 之间的所有奇数之和 total = 0 for i in range(1, 101, 2): total += i print("循环结束,1-100之间所有奇数的和为:",total) # 计算 100 - 500 之间所有3的倍数的数字之和 total = 0 for i in range(100, 501): if i % 3 == 0: total += i # print(i) print("100-500之间所有3的倍数的数字之和为:{}".format(total)) # 嵌套循环案例 # 打印一个长度为m,宽度为n的长方形 m = int(input("请输入长方形的长:")) n = int(input("请输入长方形的宽:")) for i in range(n): for j in range(m): print("~ ", end="") print() # 打印九九乘法表 # 外层循环控制行 for i in range(1, 10): # i ∈ [1,10) # 内层循环控制列 for j in range(1, i+1): # 第一行有一列,第二行有两列... print(f"{j} x {i} = {j * i}", end="\t") print()

3、循环进阶案例

# - 需求:根据输入的用户名密码执行登录操作 # - 细节: # 1. 正确的用户名和密码为admin/666888 、zhangsan/123456、lisi/888666 # 2. 输入用户名和密码进行登录,直到登录成功,程序结束运行; 如果登录失败,则继续输入用户名和密码进行登录 # 3. 输入的用户名和密码不能为空! # 4. 登录成功:输出 "登录成功,进入首页~" # 5. 登录失败:输出 "用户名或密码错误, 请重新输入!" while True: # 设置条件恒为真,定义一个死循环 username = input("请输入用户名:") password = input("请输入密码:") if username == "" or password == "": print("用户名或密码不能为空") continue # 结束本次循环,进入下一次循环 elif username == "admin" and password == "666888": print(f"{username}登录成功,进入首页~") break # 结束整个循环 elif username == "zhangsan" and password == "123456": print(f"{username}登录成功,进入首页~") break elif username == "lisi" and password == "888666": print(f"{username}登录成功,进入首页~") break else: print("用户名或密码错误,请重新输入!") continue # - 需求:猜数字小游戏 # 1. 系统随机生成一个随机数 # 2. 用户根据提示猜数字,并将所猜的数字输入系统 # 3. 如果猜错,系统给出提示是猜大了,还是猜小了,然后继续输入猜的数字 # 4. 如果猜对,系统自动退出,游戏结束 import random num = random.randint(1, 100) # num ∈ [1,100] count = 0 while True: guess = int(input("请输入你猜的数:")) # 定义在循环体内,猜错了要重新输入 count += 1 # 每执行一次循环都是多猜了一次 if guess > num: print("猜大了>_>") continue # 不写也行,那就多判断一次 elif guess < num: print("猜小了<_<") continue else: print(f"猜对啦ヾ(≧▽≦*)o 生成的随机数是:{num}。一共猜了{count}次") break

总结

以上就是今天要讲的内容,本文简单介绍了Python程序执行时流程控制方面的知识。如有问题,欢迎指教!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询