0x00 前言简述
描述:上一章,我们学习了Python3编程中操作运算符及其运算符的优先级,相信各位初学看友边看、边实践的基础下已经初步掌握它了,这一章我们一起学习Python3编程入门中流程控制的相关语法及实践案例,它也是Python编程中最基础且常用的部分,所以说也是需要我们掌握的。
温馨提示:作者后续实践主要在 Ubuntu 24.04 TLS
Python 3.12
Jupyter Notebook
环境中运行,若要配置为作者的学习环境,可参考《#AIGC学习之路》专栏中的流程。
温馨提示:若各位看友在其他平台看到此篇文章,一定要关注公众号【全栈工程师修炼指南】进行持续学习!我们一同学习,一起进步,关注后回复【加群】哟!
0x01 Python3 流程控制语句
描述:在 Python 编程中,流程控制语句是用来控制程序执行顺序的,它分为条件控制
与循环语句
。
条件控制关键字:if...elif...else
、match...case
( Python 3.10 新增,类似于其他编程中 switch...case 语句
)
循环语句关键字:while、for、else、break、continue、pass
。
1.Python3编程中条件控制
描述:Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
1.1 if 语句
描述:在 Python 中,if
条件语句的流程图可以帮助你理解代码的逻辑流,下面是一个简单的 if-elif-else
嵌套条件语句的流程图:
graph TD;
Start["开始"] --> CheckCondition{"条件1?"};
CheckCondition -- 是 --> Action1["执行操作1"];
CheckCondition -- 否 --> CheckCondition2{"条件2?"};
CheckCondition2 -- 是 --> Action2["执行操作2"];
CheckCondition2 -- 否 --> Action3["执行操作3"];
Action1 --> End["结束"];
Action2 --> End;
Action3 --> End;
语法格式:
方式1.if-elif-else
及嵌套条件语句格式:
# 常规
if [表达式1]:
执行语句
elif [表达式2]:
执行语句
else:
执行语句
# 嵌套
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
方式2.三元(三目)操作符 语句格式:
代码语言:javascript复制# Python 是一种极简主义的编程语言,它没有引入? :这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。
# 如果条件为真时候将x值赋给small,为假时候将y值赋给small
x if 条件 else y
示例演示
- 示例1.狗的年龄计算判断。
#!/usr/bin/python3
# coding=utf-8
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
print("你是在逗我吧!")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
elif age > 2:
human = 22 (age -2)*5
print("对应人类年龄: ", human)
# 退出提示
input("点击 enter 键退出")
执行结果:
代码语言:javascript复制$ python3 dog.py
请输入你家狗狗的年龄: 1
相当于 14 岁的人。
点击 enter 键退出
- 示例2.验证输入的数字是否为奇数或偶数。
# !/usr/bin/python3
# coding=utf-8
num=int(input("输入一个数字:"))
if num%2==0:
if num%3==0:
print ("你输入的数字可以整除 2 和 3")
else:
print ("你输入的数字可以整除 2,但不能整除 3")
else:
if num%3==0:
print ("你输入的数字可以整除 3,但不能整除 2")
else:
print ("你输入的数字不能整除 2 和 3")
- 示例3.三目运算符的嵌套使用。
# !/usr/bin/python3
# coding=utf-8
num=int(input("输入一个数字:"))
( print("能被 2 或 3 都整除") if num%3==0 else print("能被 2 整除,但不能被 3 整除") ) if num%2==0 else ( print("能被 3 整除,但不能被 2 整除") if num%3==0 else print("不能被 2 或 3 整除"))
补充知识: Python 中的 else 语句联用说明。
- else 语句跟
if 语句
搭,构成“要么怎样,要么不怎样
”的语境 - else 语句跟
for / while 语句
搭,构成“干完了能怎样,干不完就别想怎样
”的语境 - else 语句跟
try
语句搭构成“没有问题,那就干吧
”的语境 - else 语句与for/while语句搭配时候, 只有在循环正常执行完成后才会执行 else 语句块的内容。
特别注意
- Python中不是使用
{}
包含条件代码块,而是采用缩进的方式来判别执行的代码块; - Python中如果 if 语句中的条件过长,可以用接续符
来换行,注意
后的一行要缩进没有要求,可无序缩进,但我们保持代码的可读性一般设置同样的缩进格式。
if 2>1 and 3>2 and 4>3 and
5>4 and 6>5 and 7>6 and
8>7:
print("OK")
- Python中当条件结果为
0, false, '',[], (), {}, set(), None
时都将返回false
,当条件不为 0, True, 'None',至少有一个元素的容器对象, 字符串不为空串
,则都将返回为真;
类型 | False | True |
---|---|---|
布尔 | False(与0等价) | True(与1等价) |
数值 | 0, 0.0 | 非零的数值 |
字符串 | '', ""(空字符串) | 非空字符串 |
容器 | [], (), {}, set() | 至少有一个元素的容器对象 |
None | None | 非None对象 |
- 三目运算符是可以嵌套, 但需要注意 if 和 else 的配对使用,例如:
a if a > b else c if c>d else d
a if a > b else ( c if c>d else d )
1.2 match 语句
描述:从 Python 3.10 开始引入 match...case 条件语句,,也被称为“模式匹配”或“结构化匹配”。有了它我们就不需要再使用一连串的 if-else 来判断,match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,最后的case _:
类似于 C 和 Java 中的 default:,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。
下图,是一个 match...case 条件语句的流程图:
代码语言:javascript复制graph TD;
Start["开始"] --> Match{"匹配表达式"};
Match -- 匹配模式1 --> Case1["执行操作1"];
Match -- 匹配模式2 --> Case2["执行操作2"];
Match -- 匹配模式3 --> Case3["执行操作3"];
Match -- 默认情况 --> DefaultCase["执行默认操作"];
Case1 --> End["结束"];
Case2 --> End;
Case3 --> End;
DefaultCase --> End;
语法格式:
代码语言:javascript复制match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _: # _ 是一个特殊的“占位符”模式,用于匹配任何值(类似于 else)
<action_wildcard>
使用示例:
- 示例1.基本模式匹配.
x = 10
match x:
case 10:
print("x is 10")
case 20:
print("x is 20")
case _:
print("x is something else")
- 示例2.对象模式匹配 (重点学习)
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(0, 3)
match p:
case Point(x=0, y=y):
print(f"Point is on the Y axis at {y}")
case Point(x=x, y=0):
print(f"Point is on the X axis at {x}")
case Point(x, y):
print(f"Point is at ({x}, {y})")
case _:
- 示例3.OR 模式匹配, 使用
|
来表示一个或多个模式。
x = 2
match x:
case 1 | 2 | 3:
print("x is 1, 2, or 3")
case _:
print("x is something else")
- 示例4.if 模式匹配
x = 10
match x:
case x if x > 5:
print("x is greater than 5")
case _:
print("x is 5 or less")
2.Python3编程中循环语句
描述:Python 循环语句有 for 和 while,当满足循环条件时,就重复执行相应的代码块,此外还设有 break(结束当前循环
),continue(跳过本次循环
)等循环语句中的关键字用于退出或者跳过循环, 以及 pass 空语句主要为了保持程序结构的完整性。。
特别注意: 循环语句中注意冒号和缩进,另外,在 Python 中没有 do..while
循环。
2.1 while 语句
在 Python 中,while 条件语句用于创建循环结构, 下面是一个 while 条件语句的流程图:
代码语言:javascript复制graph TD;
Start["开始"] --> CheckCondition{"条件"};
CheckCondition -- 是 --> Action["执行操作"];
Action --> CheckCondition;
CheckCondition -- 否 --> End["结束"];
语法格式:
代码语言:javascript复制while (表达式条件):
为真则执行代码块
else:
当条件变为 False 时,则执行 else 语句
2.2 for 语句
在 Python 中,for 条件语句用于迭代序列(如列表、元组、字典、集合或字符串)。下面是一个 for 条件语句的流程图:
代码语言:javascript复制graph TD;
Start["开始"] --> Initialize{"初始化迭代器"};
Initialize --> CheckNext{"是否有下一个元素?"};
CheckNext -- 是 --> Action["执行操作"];
Action --> CheckNext;
CheckNext -- 否 --> End["结束"];
语法格式:
代码语言:javascript复制for 变量 in 表达式:
循环体
else:
它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行, 但循环被break终止时不执行。
示例演示
- 示例1.使用 while 、for 循环语句分别实现1-100 所有整数的和。
# while 循环
num=1
sum=0
while(num <= 100):
sum = num
num = 1
print("1-100所有整数和为:",sum) # 5050
# for 循环
sum=0
for i in range(1,101):
sum = i
print("1-100所有整数和为:",sum) # 5050
- 示例2.计算十进制转其他进制数。
#十进制转化
while True:
number = input('请输入一个整数(输入Q退出程序):')
if number in ['q','Q']:
break #如果输入的是q或Q,结束退出
elif not number.isdigit():
print('您的输入有误!只能输入整数(输入Q退出程序)!请重新输入')
continue #如果输入的数字不是十进制,结束循环,重新开始
else :
number = int(number)
print('十进制 --> 十六进制 :%d -> 0x%x' %(number,number))
print('十进制 --> 八进制 :%d -> 0o%o' %(number,number))
print('十进制 --> 二进制 :%d ->'%number,bin(number))
- 示例3.逆序打印九九乘法表
for i in range(9,0,-1):
for j in range (1,i):
print("t",end="")
for k in range (i,10):
print("%dx%d=%d" % (i,k,k*i), end="t")
print()
执行结果:
- 示例4.2~10那些是质数(只能被1或者本身整除的)
for x in range(2,10):
for y in range(2,x):
if x % y == 0:
print(x,'不是质数,能被',y , '*', x // y , '得到')
break
else:
#循环中找到元素,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。
print(x,'是质数')
执行结果:
代码语言:javascript复制2 是质数
3 是质数
4 不是质数,能被 2 * 2 得到
5 是质数
6 不是质数,能被 2 * 3 得到
7 是质数
8 不是质数,能被 2 * 4 得到
9 不是质数,能被 3 * 3 得到
2.3 pass 语句
在 Python pass是空语句,是为了保持程序结构的完整性,简单的说它不做任何事情,一般用做占位语句。
使用示例:
代码语言:javascript复制# 常规使用
if True:
pass
while True:
pass # 等待键盘中断 (Ctrl C)
# 最小的类
class MyEmptyClass:
pass