第四章 程序的控制结构
学习要点:
- 程序的三种控制结构
- 程序的分支结构:单分支结构、二分支结构、多分支结构
- 程序的循环结构:遍历循环、无限循环、break和continue循环控制
- 程序的异常处理:try-except
4.1 程序的三种控制结构
4.1.1 程序流程图
程序流程图时一种表达程序控制结构的方式,主要用于关键部分的程序分析和过程描述,由一系列图形、流程线和文字说明等组成。包括七种元素:
- 起止框:表示程序逻辑的开始或结束
- 判断框:表示一个判断条件,并根据判断结果选择不同的执行路径
- 处理框:表示一组处理过程,对应于顺序执行的程序逻辑;
- 输入输出框:表示程序中的数据输入或结果输出;
- 注释框:表示程序的注释
- 流向线:表示程序的控制流,以带箭头的直线或曲线表达程序的执行路径
- 连接点:表示多个程序流程图的连接方式,常用于将多个较小流程图组织成较大流程图。
描述一个计算问题的程序过程包括:IPO、流程图、伪代码和程序代码
4.1.2 程序控制结构基础
程序由三种基本结构组成:顺序结构,分支结构和循环结构。
顺序结构是程序按照线性顺序依次执行的一种运行方式
分支结构是程序根据条件判断结果而选择不同向前执行路径的一种运行方式。
循环结构是程序根据条件判断结果向后执行的一种运行方式
4.1.3 程序控制结构扩展
在分支结构原理的基础上,python增加了异常处理,使用try-except保留字,异常处理以程序是否异常为判断条件,根据一段代码执行的正确性进行程序逻辑选择,异常处理是分支结构的一种扩展。
在循环结构的基础上,python提供两个循环控制符break和continue,对循环的执行过程进行控制。break控制符用于结束当前循环,continue控制符用来结束当前循环的当此循环。
4.2 程序的分支结构
4.2.1 单分支结构 :if
python的单分支结构使用if保留字对条件经行判断:
if <条件>:
<语句块>
其中if : 和语句块前的缩进是语法的一部分。
# 判断用户输入数字的奇偶性
s = eval(input("请输入一个整数:"))
if s % 2 == 0 :
print("这是个偶数")
print("输入的数字是:",s)
<条件>是一个或多个条件,多个条件采用and 或or经行逻辑组合
4.2.2 二分支结构:if-else
python的二分支结构:
if <条件>:
<语句块1>
else:
<语句块2>
简单说:二分支结构根据条件的True或False结果产生两条路径。
s=eval(input("请输入一个整数:"))
if s%3 == 0 and s%5 == 0:
print("这个数字能够同时被3和5整除")
else:
print("这个函数不能够同时被3和5整除")
二分支结构还有一种更加简洁的方式表达,适合<语句块1>和<语句块2>都只包含简单表达式的情况,语法格式如下:
<表达式1> if <条件> else <表达式2>
对于简洁表达式,要使用表达式而不是语句。例如:
s = eval(input("请输入一个数字:"))
token="" if s%3 == 0 and s%5 == 0 else "不"
print("这个数字{}能够同时被3和5整除".format(token))
提示:表达式和语句:
表达式是产生或计算新数据值的代码片段,它不是完整语句。例如99+1是表达式,a=99+1则是语句。
4.2.3 多分支结构:if-elif-wlse
python使用多分支语句对多个相关条件进行判断,并根据不同条件的结果按照顺序选择执行路径:
if <条件1>:
<语句块1>
elif<条件2>:
<语句块2>
……
else:
<语句块N>
多分支结构通常用于判断同一个条件或一类条件的多个执行路径。要注意,python会按照多分支结构的代码顺序一次评估判断条件,寻找并执行第一个结果为true条件对应的语句块,当前语句块执行后跳过整个if-elif-else结构,如果没有任何条件成立,else下面的语句块被执行。else子句是可选的。
利用多分支结构编写代码时要注意多个逻辑条件的先后关系。
4.2.4 判断条件及组合
分支结构中的判断条件可以使用任何能够产生True或False的语句或函数。形成判断条件最常见的方式是采用关系操作符。
操作符 | 数字符号 | 操作符含义 |
---|---|---|
< | < | 小于 |
<= | ≤ | 小于等于 |
>= | ≥ | 大于等于 |
> | > | 大于 |
== | = | 等于 |
!= | ≠ | 不等于 |
python语言中,任何非零的数值,非空的数据类型都等价于True,0或空类型等价于False
python语言使用保留字not,and,和or 对条件进行逻辑运算或组合
4.3 程序的循环结构:
遍历循环和无限循环。遍历循环使用保留字for依次提取遍历结构各元素进行处理;无线循环使用保留字while根据判断条件执行程序。
4.3.1 遍历循环:for
for <循环变量> in <遍历结构>:
<语句块>
便利结构可以是字符串,文件,range()函数或组合数据类型等。
遍历循环的扩展模式
for <循环变量> in <遍历结构>:
<语句块1>
else:
<语句块2>
当for循环正常执行之后,程序会继续执行else语句中的内容。else语句只在循环正常执行之后才执行并结束。因此,可以在<语句块2>中放置评价循环执行情况的语句。
4.3.2 无限循环 while
while <条件>:
<语句块>
当程序执行到while语句是,判断条件如果为true,执行循环体语句,语句结束后返回再次判断while语句的条件:当条件为false时,循环终止,执行于while同级别缩进的后续语句。
while循环也可以加入else奖励
4.3.3 循环控制break和continue
- break用于跳出最内层for或while循环,脱离该循环程序后程序继续执行后续代码。如果有两层或多层循环,break跳出最内层循环。
- continue用来结束当前当此循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。
continue语句和break语句的区别是:continue语句只结束本次循环,不终止整个循环的执行,而break具备结束整个当前循环的能力。
4.4 程序的异常处理
try:
<语句块1>
except:
<语句块2>
语句块1 是正常执行的程序内容,当执行这个语句块发生异常时,则执行except保留字后面的语句块2
4.6实例解析——猜数字游戏
import random
target = random.randint(1,1000)
count = 0
while True:
try:
guess = eval(input("请输入一个猜测的整数(1至1000):"))
except:
print('输入有误,不计入猜测次数哦!')
continue
count = count +1
if guess > target:
print('猜大了')
elif guess < target:
print('猜小了')
else:
print('猜中了')
break
print('此轮的猜测次数是:',count)
print("You guess {} times!congratulate!".format(count))
使用input()获取用户输入是一定不会出现异常的,因为任何输入都会被当作字符串,但eval(input())则可能在输入不是数字时产生异常导致程序退出,因此,需要异常判断。
来源:CSDN
作者:mob-zima
链接:https://blog.csdn.net/qq_46025535/article/details/104115021