Python2 - 流程控制 摘要本文系统讲解 Python 程序执行的三大结构顺序结构、分支结构和循环结构。其中分支结构涵盖 if 条件判断与 match_case 模式匹配循环结构涵盖 while 循环、for 循环及 range 语句并通过登录验证、猜数字、九九乘法表等实战案例帮助读者掌握条件判断与循环控制的核心用法。目录一、程序执行结构二、if条件判断三、match_case模式匹配四、循环1、while循环2、for循环3、循环进阶案例总结一、程序执行结构程序执行结构主要分为三种顺序结构按代码书写顺序自上而下依次执行。分支结构if分支、match_case模式匹配循环结构while循环、for循环二、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缩进shifttab取消缩进 # 根据用户输入的年份判断是闰年还是平年 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(输入的三边无法构成三角形)注意判断语句的结果必须是布尔类型True或False。如果为 True 会执行if内的代码False则不会执行。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 _: 如果前面都没有匹配上, 执行该操作执行流程首先计算 match 指定的表达式的值从上到下依次和case后面的值进行匹配匹配正确就执行对应的语句如果前面所有的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}运算符操作)注意Python解释器为3.10以上的版本才支持match_case语法。四、循环1、while循环while循环是通过条件表达式来控制是否要进行下一次循环的。如果条件表达式为True则执行循环体中的语句如果条件表达式为False则结束循环。应用场景用于在某个条件满足时一直循环循环的次数通常是未知的只知道循环开始/结束的条件。关注的是循环的条件语法while 条件表达式: 条件成立时执行的代码 ...... else: # else可有可无 条件为False循环正常结束时执行示例# 3、while循环无限循环 # 循环打印10次人生苦短我用python~~ # 1定义循环因子 index(索引、下标)--i i 0 # 2设置循环条件 while i10: # 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(f1-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, i1): # 第一行有一列第二行有两列... 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程序执行时流程控制方面的知识。如有问题欢迎指教