第四章 控制结构体
第四章 控制结构体
4.1 if条件控制
4.1.1 语法
if condition:
statement
[elif condition:
statement]
[else:
statment]
单行结构体:
if condition: 子代码块
if condition:子代码块;else:子代码块
if condition:子代码块;[elif condition: 子代码块;] else:子代码块
4.1.2 shell if控制结构体
if condition;then
statement
[elif condition;then
statement]
[else
statement]
fi
4.1.3 关于conditon的说明
case1: condition可以为一个表达式;
case2: conditon可以为任意的数据类型,只要bool(condition)可以进行转换;
4.1.4 扩展说明
case1: if结构体支持多重嵌套;但是不宜嵌套的层数过深,一边嵌套三层左右,嵌套过深一般都是程序代码的逻辑有问题,或者需要考虑采用其他的方式实现;
case2: elif结构体可以定义任意数量个;
4.2 while循环控制
4.2.1 while语法
while conditon:
statement
[else:
statement]
单行结构体:
while condition: 子代码块
while conditon: 子代码块;else: 子代码块
4.2.2 shell while循环
while condition;do
statement
done
4.2.3 condition说明
case1: condition可以为一个表达式;
case2: conditon可以为任意的数据类型,只要bool(condition)可以进行转换;
case3: condition的特殊用法flag用法,后续扩展说明;
4.2.4 else代码块执行条件:
case1: while结构体的condition为False时,才会触发else代码块的执行;
case2: while结构体中,一旦有break关键字被触发执行,break会触发整个while else结构体的退出,此时conditon的布尔值并未发生改变,会直接影响else代码块的触发执行;
case3: while结构体中的continue关键字,对else代码块的执行没有任何影响;
4.2.5 flag用法
4.2.5.1 引入
shell的break continue关键字的语法为: break n |continue n;其在多层循环嵌套的场景能够自由的对多层循环结构体进行控制;而python中这两个关键字是单独使用的,只能完成对当前循环结构体的控制,若要控制外层循环嵌套结构体是无法通过break continue关键实现;故此引入了flag的用法,用以实现多对层循环嵌套结构的控制;
4.2.5.2 用法
将循环控制的条件设置为一个变量flag;flag为预先设置好的一个变量,此变量的逻辑运算的结果能正常让循环结构体的执行;此后在无限循环结构体或多层循环结构体中,通过某个条件去控制flag的值,从而实现控制外层循环结构的功能;
用法:
flag=bool(obj)==True
while flag: 子代码块
4.2.5.3 应用场景
case1: 无限循环应用场景,可以在在代码块中定义某个条件下去修改flag的值触发终止循环;
case2: 多重while循环结构体中,可以采用flag停止最外层的循环;
4.4 for循环控制
4.4.1 语法
for var in iterable:
statement
[else:
statment]
单行结构体:
for var in iterable: 代码块
for var in iterable:代码块1;else: 代码块;
4.4.2 shell for结构体
for var in seq;do
statment
done
4.4.3 else代码块的执行条件
case1: iterable遍历完成之后,才会触发else代码块的执行;
case2: 同while..else结构体类似,for..else结构体中else代码块的执行同样受break关键字的影响;
case3: for..else结构体中else代码块是否执行并不受continue关键字的影响;
4.5 continue break用法
| 关键字 | 功能 |
|---|---|
| break | 终止当前循环结构体的执行,整个代码执行当前循环结构体后的程序代码; |
| continue | 停止当前循环结构体的当前次循环的继续执行,继续开始当前循环结构体的下一次循环; |

浙公网安备 33010602011771号