type
status
date
slug
summary
tags
category
icon
password
5.1 if语句判断
语法:
注:
- 语法中,一个或多个elif可以省略, 末尾一个的else也是可选的.
- 如果条件只有两种可能, 用if…else….
- 如果条件有多种可能, 用if…elif…(elif)…else….
- if后面只加一个列表名来判断,则列表为空,返回false,不执行下面语句,有元素,则返回true,执行下面语句
5.1.1 三元表达式
练习:
5.1.2 条件语句设计
5.1.3 if嵌套
if嵌套指的是if语句的 语句体里面还是一个if语句. 实际开发过程中,if语句的嵌套或者循环嵌套, 一般不会超过3级.
5.1.4 消失的分支(提升)
对于给定的分段函数:
x | y |
x<0 | 0 |
0≤x<5 | x |
5≤x<10 | 3x-5 |
10≤x<20 | 0.5x-2 |
20≤x | 0 |
对于上面分段函数,编写一段程序实现
通过多个分支判断,即可实现分段函数功能,但是,若在实际业务中,如果根据不同的条件有几十种分类结果,该如何处理?由此看出,if-elif-else分支判断不适用于有多个范围的场景判断,可读性和可扩展性都相对较差。在此,可以使用bisect来优化范围类分支判断。
5.2 while 通用循环
语法:
break 在循环里执行break,只跳出当前循环,
continue 只进入当前循环的下一次迭代
else 如果不是break中断的while循环, 那么就while循环执行完后执行else后面的语句
例题:
5.3 for 迭代循环
5.3.1 for循环中的元组赋值
如果在迭代一个由元组构成的序列, 那么循环目标本身也可以是一组目标.这是元组解包赋值运算的另一个运用.
上面代码第一次循环, 就像是编写
x, y = (1, 2)
而第二次是编写x, y = (3, 4)
,以此类推.5.3.2 定制迭代
Python提供了一套内置函数, 可以帮你在for循环内定制迭代:
- range() 返回一系列连续增长的整数, 可作为for中的索引
- enumerate(iterable, start=0) 返回可迭代对象中元素的索引和值的元组
- 默认索引从0开始, 可以设定start参数
- zip 返回一系列并行元素的元组(遍历多个序列用)
注:
在迭代循环表达式
for i in range(n): 循环体
中(n为整数), 如果n≤0时, 循环体不执行, i也不会被定义.然后直接执行后面的语句.5.3.3 for循环嵌套及跳出
for循环嵌套是指的两个或以上for循环构成的嵌套循环。如下代码就是简单的双层嵌套循环,其时间复杂度为O():
上述伪代码中,如果满足if后面表达式条件,则会终止内循环,但是外循环依然会继续下去,如何实现内外循环同时终止呢?
- 使用“旗帜”(flag)变量
- 使用for-else语句
- 将嵌套循环放入到函数中(break改为return)
- (了解)使用相同的条件在外循环进行判断
- 引发异常
5.3.4 for循环和while循环的异同:
- 相同点:(功能完成上)
- while循环可以完成的功能for循环基本都可以实现, for循环可以完成的功能while循环基本也都可以实现
- 不同点:(选择使用上)
- for循环往往用在遍历 字符串 列表等循环次数固定的场景
- while循环往往用在重复多次运行上, 循环次数不固定的场景
5.4 循环中断: break和continue
- break: 当运行到break时, 跳出循环,执行后面的语句
- continue: 当运行到continue时, 本次循环结束, 但是会跳到下一循环
上面例子是continue和break在for循环中的范例, 它们在while循环中的用法是相同的