流程控制
- 2021-10-09 23:16:37
- admin
- 1773
- 最后编辑:admin 于 2022-11-24 20:28:40
条件测试:
Python 和 C 一样,任何非零整数都为真,零为假。这个条件也可以是字符串或列表的值,事实上,任何序列都可以;长度非零就为真,空序列则为假。
== 判断左右两边的值是否相等
!= 判断左右两边的值是否不等
< > <= >= 数值比较
and or 检查多个条件
布尔表达式 结果为 True 或 False
关键字 in ,用于确认序列中是否包含某个值。
python 区别于其他语言,代码块并不是使用花括号{},而是使用缩进的形式。注意,同一块语句的每一行的缩进相同。
if 语句
if 语句包含零个或多个 elif 子句及可选的 else 子句。
python的 if 语句结构:
单 if 结构:当条件测试通过时,执行指定操作;
if-else 结构:当条件测试通过时执行一个操作,否则执行另一个操作;
if-elif-else 结构:多条件判断,依次检查每个条件测试,直到通过;
注:每个条件测试后面都跟着冒号:,对应的操作代码要统一缩进。
如:
age = 31 if age < 18: print("未成年") elif age < 30: print("年轻人") elif age < 50: print("中年人") else: print("老年人")
for 语句
Python 的 for 语句与 C 或 Pascal 中的不同。Python 的 for 语句不迭代算术递增数值(如 Pascal),或是给予用户定义迭代步骤和暂停条件的能力(如 C),而是迭代列表、字典或字符串等任意序列,元素的迭代顺序与在序列中出现的顺序一致。 例如:
words = ['cat', 'window', 'defenestrate'] for w in words: print(w, len(w)) # 输出结果: cat 3 window 6 defenestrate 12
遍历集合时修改集合的内容,会很容易生成错误的结果。因此不能直接进行循环,而是应遍历该集合的副本或创建新的集合:
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'} for user, status in users.copy().items(): if status == 'inactive': del users[user] active_users = {} for user, status in users.items(): if status == 'active': active_users[user] = status
while 语句
age = 1 # 循环变量赋初值 while age <= 18: #条件测试,勿忘冒号 print(age) #循环体 age += 1 #勿忘循环变量变更,否则陷入死循环
循环中的 break、continue
break 语句和 C 中的类似,用于退出最近的 for 或 while 循环;
continue 语句也借鉴自 C 语言,表示继续执行循环的下一次迭代。
range() 函数
内置函数 range() 常用于遍历数字序列,但注意:该函数并不是返回一个数字列表,而是一个可迭代对象。迭代时,函数或程序结构可通过该对象获取连续项,直到所有元素全部迭代完毕,并没有生成真正的列表,从而节省了空间。for 语句就是这样的结构。
for i in range(5): print(i) # 输出结果: 0 1 2 3 4
range() 的三个参数意义:
第一个参数表示循环变量i的开始值,如果是0,可以省略不写;
第二个参数表示循环变量i的上限值,但不包含它,range中只有一个数字时,表示该参数;
第三个参数表示循环变量i每次迭代循环结束后的递增值,1可以省略不写;
如:
range(1,5) => [1, 2, 3, 4] range(1,10,2) => [1, 3, 5, 7, 9] a = range(1,10,2) for var in a: print(var) 输出结果:1 3 5 7 9
如要将 range() 返回的可迭代对象转化为列表,可以使用 list() 函数。
生成的序列不包含给定的终止数值;
range 可以不从 0 开始,还可以按指定幅度递增。
list(range(5, 10)) [5, 6, 7, 8, 9] list(range(0, 10, 3)) [0, 3, 6, 9]
match 语句
match 语句采用一个表达式并将其值与作为一个或多个 case 块给出的连续模式进行比较。这在表面上类似于其他语言中的 switch 语句。
最简单的形式是将一个目标值与一个或多个字面值进行比较:
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"
注意最后一个代码块:“变量名” _ 被作为 通配符 并必定会匹配成功。 如果没有 case 语句匹配成功,则不会执行任何分支。
使用 | (“ or ”)在一个模式中可以组合多个字面值:
case 401 | 403 | 404: return "Not allowed"