程序结构
程序结构主要分为三种: 顺序结构,选择结构,循环结构。
顺序结构: 程序按顺序执行,从上到下,从左到右.
选择结构: 程序根据条件选择执行的分支,如if-else语句.
循环结构: 程序重复执行某段代码,如while语句.
选择语句
最简单的if语句
if 条件表达式:
语句块
其中表达式可以是布尔值或变量,也可以是比较表达式或逻辑表达式.如果表达式为True,则执行语句块,否则不执行.
相当于汉语的”如果…就…”
注意: if语句后面必须要有冒号(:), 语句块必须要有缩进.
if-else语句
if 条件表达式:
语句块1
else:
语句块2
如果条件表达式为True,则执行语句块1,否则执行语句块2.
相当于汉语的”如果…就…否则…”
if-else语句可以用条件表达式进行简化:
if 条件表达式:
语句块1
else:
语句块2
可以写成:
if 条件表达式: 语句块1
else: 语句块2
else不能单独存在,必须和if语句配合使用.
if-elif-else语句
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
elif 条件表达式3:
语句块3
else:
语句块4
if-elif-else语句可以有多个条件表达式,当满足第一个条件表达式时,执行对应的语句块,然后结束.如果不满足任何条件表达式,则执行else语句块.
相当于汉语的”如果…就…否则如果…就…否则…”
注意: elif语句后面必须要有冒号(:), 语句块必须要有缩进.
使用if选择语句时,当使用布尔型变量作为判断条件时,假设布尔型变量为flag,则较为规范的写法为:
if flag: #表示为True
if not flag: #表示为False
以下为不规范的写法:
if flag == True:
if flag == False:
选择语句的嵌套
前面介绍的选择语句都可以互相嵌套,但是一定要控制好不同级别代码块的缩进,否则会出现语法错误.
同时也不能嵌套太深,否则会导致代码可读性差,不易维护.
match-case语句
Python3.10引入的match-case语句,可以用来进行多分支条件判断.可以实现类似if-elif-else的功能,但是更加简洁.
match 变量:
case 值1:
语句块1
case 值2:
语句块2
case 值3:
语句块3
case _:
语句块4
match语句后面接待判断的变量,然后用case语句块进行条件判断,case后面接待判断的值,如果变量的值与case的值相等,则执行对应的语句块,否则继续判断下一个case语句块.如果变量的值与所有case的值都不匹配,则执行最后一个语句块.
case _: 类似于 C 和 Java 中的 default:, 当其他 case 都无法匹配时, 匹配这条, 保证永远会匹配成功.
match-case语句的使用场景:
1.匹配字面值
例如通过结构化模式匹配语句实现判断今天是星期几:
from datetime import datetime
day=datetime.today().weekday()
match day:
case 0:
print("星期一")
case 1:
print("星期二")
case 2:
print("星期三")
case 3:
print("星期四")
case 4:
print("星期五")
case 5:
print("星期六")
case 6:
print("星期日")
2.绑定变量
match语句还可以绑定变量,可以将匹配的值绑定到变量上,然后在后续语句中使用:
a=input("请输入一个数字:")
match a: #匹配变量a
case b: #使用不存在的变量b匹配变量a
print(b)
3.约束项
match语句还可以添加约束项,用于限制匹配的范围,例如只匹配整数:
a=input("请输入一个数字:")
match a:
case int(b): #匹配变量a为整数
print(b)
4.多分支条件判断
match语句还可以实现多分支条件判断,例如判断一个数字是否为奇数或偶数:
a=input("请输入一个数字:")
match a:
case int(b) if b%2==0: #匹配变量a为整数,且为偶数
print(b,"是偶数")
case int(b) if b%2!=0: #匹配变量a为整数,且为奇数
print(b,"是奇数")
循环语句
反复执行某段代码,直到满足某种条件为止,称为循环语句.
循环语句分为两种: 迭代循环和条件循环.
- 迭代循环: 迭代循环是最常见的循环语句,用于重复执行某段代码.如for循环.
- 条件循环: 条件循环是根据条件判断是否继续执行循环,直到条件满足为止.如while循环.
while循环
while循环是最基本的循环语句,用于重复执行某段代码,直到条件表达式为False为止.
while 条件表达式:
循环体
当条件表达式为True时,执行循环体,然后再次判断条件表达式,如果还是True,则继续执行循环体,否则退出循环.
相当于汉语的”当…时,重复…”
注意: while语句后面必须要有冒号(:), 在使用while循环时,一定要保证循环体内的变量的变化能影响到条件表达式的判断, 即存在退出循环的条件, 否则会导致死循环.
for循环
for循环是迭代循环,一般运用在循环次数已知的情况下,用于重复执行某段代码,直到迭代对象中的元素全部被遍历为止.
for 变量 in 可迭代对象:
循环体
其中变量是循环的临时变量,可迭代对象是需要循环的对象,如列表、元组、字符串等.
应用场景:
1.进行数值循环
如实现1到100的累加:
sum=0
for i in range(1,101):
sum+=i
print(sum)
`
这里用到了range()函数,用于生成一个序列,序列的第一个参数是起始值(可以省略, 省略默认为0), 第二个参数是终止值(不能省略),第三个参数是步长即两个数之间的间隔,默认步长为1.
如果只有一个参数,则表示指定的是end, 则生成从0开始的序列.如果有两个参数,则表示指定的是start和end, 则生成从start开始的序列, 步长为1.只有三个参数都指定时, 则生成从start开始的序列, 步长为step.
2.遍历字符串
如实现字符串的循环:
s="hello world"
for c in s:
print(c)
这里用到了字符串的遍历, 即依次访问字符串中的每个字符并打印.
for语句还可以用来迭代列表元组等, 后续会详细介绍.
循环语句的嵌套
前面介绍的循环语句都可以互相嵌套.
如while循环嵌套while循环:
while 条件表达式1:
while 条件表达式2:
循环体
如for循环嵌套for循环:
for 变量1 in 可迭代对象1:
for 变量2 in 可迭代对象2:
循环体
如while循环嵌套for循环:
while 条件表达式:
for 变量 in 可迭代对象:
循环体
如for循环嵌套while循环:
for 变量 in 可迭代对象:
while 条件表达式:
循环体
循环语句的退出
当循环条件一直满足时, 程序会一直执行循环体, 这称为死循环. 如果希望在中间离开循环也就是在for循环结束计数前或者while循环条件不满足时退出循环, 以下两种方法可以做到:
- 使用break语句: break语句可以提前退出循环, 后续的循环体不会再执行.
- 使用continue语句: continue语句可以提前结束本次循环, 然后继续执行下一次循环.
break语句
break语句可以提前退出循环, 后续的循环体不会再执行.
如果使用嵌套循环, 则break语句只会退出当前的循环, 不会影响嵌套循环.
在while语句中使用break语句:
while 条件表达式:
循环体
if 退出条件:
break
在for语句中使用break语句:
for 变量 in 可迭代对象:
循环体
if 退出条件:
break
continue语句
continue语句没有break语句强大,它只能终止本次循环而提前进入下一次循环.
如果使用嵌套循环, 则continue语句只会影响当前的循环, 不会影响嵌套循环.
在while语句中使用continue语句:
while 条件表达式:
循环体
if 退出条件:
continue
在for语句中使用continue语句:
for 变量 in 可迭代对象:
循环体
if 退出条件:
continue
例如, 计算100以内所有的奇数之和:
sum=0
for i in range(1,101):
if i%2==0:
continue
sum+=i
print(sum)
这里用到了continue语句, 即如果i为偶数, 则跳过本次循环, 继续执行下一次循环.
pass语句
pass语句是空语句, 用于占位, 一般用在需要编写代码但还未编写的位置, 方便后续补充.