文章目录
控制流程
一、流程概述
所谓的流程,即程序执行的过程。之前我们接触的程序,都是按部就班,自顶而下的去执行的,我们称这种程序结构为顺序结构。
程序的三种结构:
- 顺序结构
- 选择结构
- 循环结构
二、 选择结构
1. if
缩进的语法
缩进大小随意,但是要保持一致。按照惯例,使用4个空格。
2. if-else
提供两条分支。
3. if-elif
注意多选择分支时,分支顺序的重要性。【分两种情况】
例如:输入学生的成绩,根据成绩输出对应的等级。
4. if-elif-else
为最后一条分支
5. if-else简化版
if-else简化版类似于其他语言中的三元运算符。格式如下:
表达式1 if 条件表达式 else 表达式2
其中,条件表达式执行条件判断,如果条件表达式的值为True,则返回表达式1的值,否则返回表达式2的值。
例如:输入数值,代表星期(1 - 7),如果是1 - 5,则输出“工作日”,如果是6或7,则输出“休息日”,否则输出“错误,请重新输入”。
a=int(input("输入周几:"))
if 1<=a<=5:
print("工作日")
elif 6<=a<=7:
print("休息日")
else:
print("错误,请重新输入",a)
6. if嵌套
if是可以进行嵌套使用的,用来多层选择分支的判断。
性别:男-》开发组,女-》测试组
开发:经验大于5年(开发经理),否则(开发组员)。
测试:有过开发经验(白盒),否则(黑盒)
a = input("请输入性别:")
if a=="男":
b = int(input("请输入工作时间:"))
if b >= 5:
print("开发经理")
else:
print("开发组员")
if a=="女":
c = input("有无开发经验?(y/n)")
if c=="y":
print("白盒测试")
else:
print("黑盒测试")
7. 断言
断言,即断定某些语句是否正确。通过断言,我们可以为应用程序加入调试信息,从而检测程序关键点位置的准确性。
断言使用assert关键字,语法格式为:
assert 表达式
或:
assert 表达式,错误信息
在执行断言语句时,会对表达式1进行求值,如果该值转换为布尔类型后为False,则会产生错误信息。其中,第二种形式的错误信息是可选的,如果给出错误信息,则会在表达式为False的时候,输出我们指定的错误信息。
断言的作用
也会大家会感觉到异或,断言有什么用处呢?这种判断方式,我们完全可以自行通过if语句来实现啊,那又为什么要使用断言呢?的确,断言底层其实就是通过if语句判断与异常(我们后续课程会讲解)来实现的,例如:
assert height > 0
就相当于:
if not height > 0:
抛出异常
而第二种形式:
assert height > 0, “身高必须大于0”
就相当于:
if not height > 0:
抛出异常信息(“身高必须大于0”)
三、 循环结构
循环就是重复性的执行一件相同或相似的事情(执行多次)。
1. while
while 条件:
循环体
2. for
range函数,对可迭代对象中的每一个值赋值给in前面的变量,然后执行一次循环体。注意range函数三个参数的使用。
将求和与阶乘的程序使用for循环改写。
3. 循环嵌套
循环嵌套,是指外层循环的内部,还有内层循环,即内层循环作为外层循环的循环体。当循环嵌套时,外层循环每执行一次,内层循环都会完整的执行一轮。如果外层循环会执行m次,内层循环会执行n次,则总共会执行m * n次。
打印*图形。
4. break与else
break只能用在循环中。
else可以跟随在for或while循环之后,当循环正常执行完毕,会执行else语句,如果循环非正常执行完毕,而是通过break跳出循环,则else语句块不会得到执行。else语句是可选的。
5. continue
continue只能用在循环语句中。
break与continue基本只会用在选择判断中。无条件的break与continue虽然语法上没有错误,但从实际的角度来说是没有意义的。