Python中的流程控制语句 Python 条件语句 if 语句 Python中if语句的一般形式如下所示:
1 2 3 4 5 6 if condition_1: statement_block_1 elif condition_2: statement_block_2 else : statement_block_3
Python 中用 elif 代替了 else if ,所以if语句的关键字为:if – elif – else 。
注意:
1、每个条件后面要使用冒号 : ,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在 Python 中没有 switch…case 语句,但在 Python3.10 版本添加了 match…case ,功能也类似,详见下文。
以下是一个简单的 if 实例:
1 2 3 4 5 6 7 sex_chromosome=input () if sex_chromosome=="xx" : print ("girl" ) elif sex_chromosome=="xy" : print ("boy" ) else : print ("???" )
以下为if中常用的操作运算符:
操作符
描述
<
小于
<=
小于或等于
>
大于
>=
大于或等于
==
等于,比较两个值是否相等
!=
不等于
if嵌套,在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。
1 2 3 4 5 6 7 8 9 10 11 12 13 if 表达式1 : 语句 if 表达式2 : 语句 elif 表达式3 : 语句 else : 语句 elif 表达式4 : 语句 else : 语句
match…case Python 3.10 增加了 match…case 的条件判断,不需要再使用一连串的 if-else 来判断了。
match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_ 可以匹配一切。
语法格式如下:
1 2 3 4 5 6 7 8 9 match subject: case <pattern_1>: <action_1> case <pattern_2>: <action_2> case <pattern_3>: <action_3> case _: <action_wildcard>
case _: 类似于 C 和 Java 中的 default: ,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。
1 2 3 4 5 6 7 8 9 10 11 12 13 def http_error (status ): match status: case 400 : return "Bad request" case 404 : return "Not found" case 418 : return "I'm a teapot" case _: return "Something's wrong with the internet" mystatus=400 print (http_error(mystatus))
以上是一个输出 HTTP 状态码的实例,输出结果为:Bad request
一个 case 也可以设置多个匹配条件,条件使用 | 隔开,例如:
1 2 case 401 |403 |404 : return "Not allowed"
Python 循环语句 while 循环 Python 中 while 语句的一般形式:
1 2 while 判断条件(condition): 执行语句(statements)……
在 Python 中没有 do..while 循环。
实例:
1 2 3 4 5 6 7 num=1 sum =0 while num<=100 : sum =sum +num num=num+1 print ("1 到 %d 之和为: %d" % (n,sum ))
无限循环
1 2 3 4 5 6 import timei=0 while True : i=i+1 print (i) time.sleep(1 )
你可以使用 CTRL+C 来退出当前的无限循环。
无限循环在服务器上客户端的实时请求非常有用。
while 循环使用 else 语句
如果 while 后面的条件语句为 false 时,则执行 else 的语句块。
语法格式如下:
1 2 3 4 while <expr>: <statement(s)> else : <additional_statement(s)>
while...else
的独特之处在于:只有当循环完整执行完毕(没有遇到break)时,else块才会执行 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 num = 1 sum = 0 while num <= 100 : if num == 50 : break sum = sum + num num = num + 1 else : print ("循环正常结束,和为:" , sum ) print ("实际和为:" , sum ) num = 1 sum = 0 while num <= 100 : sum = sum + num num = num + 1 else : print ("循环正常结束,和为:" , sum )
while...else
通常用于搜索 或验证 场景:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 numbers = [1 , 3 , 5 , 7 , 9 ] target = 4 i = 0 while i < len (numbers): if numbers[i] == target: print (f"找到目标值 {target} 在位置 {i} " ) break i += 1 else : print (f"没有找到目标值 {target} " ) password = "" attempts = 0 while attempts < 3 : password = input ("请输入密码: " ) if password == "secret" : print ("密码正确!" ) break attempts += 1 print (f"密码错误,还剩{3 -attempts} 次机会" ) else : print ("尝试次数过多,账户已锁定" )
for 语句 Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
for循环的一般格式如下:
1 2 3 4 for item in iterable: else :
实例:
1 2 3 for i in range (10 ): print (i)
break 和 continue 语句及循环中的 else 子句
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 n = 5 while n > 0 : n -= 1 if n == 2 : break print (n) print ('循环结束。' )n = 5 while n > 0 : n -= 1 if n == 2 : continue print (n) print ('循环结束。' )
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被 break 终止时不执行。
1 2 3 4 5 6 7 8 for n in range (2 ,10 ): for x in range (2 ,n): if n%x==0 : print (n,"等于" ,x,"*" ,n//x) break else : print (n,"是质数" )
pass 语句
pass
是 Python 中的一个特殊语句,它被称为 “空操作”语句 或 “占位”语句 。它的主要特点是:什么都不做 。
特性
说明
作用
空操作,什么都不做
主要用途
语法占位符
使用场景
空函数、空类、待实现的代码块
语法要求
满足Python的语法完整性
性能
几乎零开销
1 2 3 4 5 6 7 8 9 10 11 def func1 (): pass def func2 (): ...
range() 函数 range()
是 Python 中非常常用且强大的内置函数,用于生成一个不可变的整数序列。
基本语法:
1 2 range (stop)range (start, stop[, step])
start
:序列的起始值(包含),默认为 0
stop
:序列的结束值(不包含)
step
:步长,默认为 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 r = range (5 ) print (list (r)) r = range (2 , 7 ) print (list (r)) r = range (1 , 10 , 2 ) print (list (r)) r = range (10 , 0 , -1 ) print (list (r)) r = range (5 , -1 , -1 ) print (list (r))
range()
支持索引和切片
1 2 3 4 5 6 7 8 r = range (10 , 21 ) print (r[0 ]) print (r[5 ]) print (r[-1 ]) sliced = r[2 :6 ] print (list (sliced))
常见应用场景
for 循环迭代
1 2 3 4 5 6 7 8 for i in range (5 ): print (f"第 {i+1 } 次循环" ) fruits = ['apple' , 'banana' , 'cherry' ] for i in range (len (fruits)): print (f"索引 {i} : {fruits[i]} " )
创建列表
1 2 3 4 5 6 7 numbers = list (range (1 , 6 )) print (numbers) evens = list (range (0 , 11 , 2 )) print (evens)
3.数学运算
1 2 3 4 5 6 7 8 9 10 11 12 total = sum (range (1 , 101 )) print (total) def factorial (n ): result = 1 for i in range (1 , n + 1 ): result *= i return result print (factorial(5 ))
4.生成复杂序列
1 2 3 4 5 6 7 squares = [x**2 for x in range (1 , 6 )] print (squares) time_slots = [f"{h:02d} :{m:02d} " for h in range (24 ) for m in range (0 , 60 , 15 )] print (time_slots[:5 ])