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后面表达式条件,则会终止内循环,但是外循环依然会继续下去,如何实现内外循环同时终止呢?
  1. 使用“旗帜”(flag)变量
  1. 使用for-else语句
  1. 将嵌套循环放入到函数中(break改为return)
  1. (了解)使用相同的条件在外循环进行判断
  1. 引发异常

5.3.4 for循环和while循环的异同:

  • 相同点:(功能完成上)
    • while循环可以完成的功能for循环基本都可以实现, for循环可以完成的功能while循环基本也都可以实现
  • 不同点:(选择使用上)
    • for循环往往用在遍历 字符串 列表等循环次数固定的场景
    • while循环往往用在重复多次运行上, 循环次数不固定的场景

5.4 循环中断: break和continue

  • break: 当运行到break时, 跳出循环,执行后面的语句
  • continue: 当运行到continue时, 本次循环结束, 但是会跳到下一循环
上面例子是continue和break在for循环中的范例, 它们在while循环中的用法是相同的