在结构化程序设计中,主要使用3种基本控制结构来构造程序,即顺序结构、选择结构和循环结构。
使用结构化程序设计方法编写出来的程序在结构上具有以下特点:
- 以控制结构为单位,每个模块只有一个入口和一个出口;
- 能够以控制结构为单位,从上到下顺序地阅读程序文本;
- 由于程序的静态描述与执行时的控制流程容易对应,所以阅读者能够方便、正确地理解程序的动作。
1.1 程序控制结构
Python程序具有三种典型的控制结构,如下图所示。
- 顺序结构:在程序执行时,按照语句的顺序,从上到下,一条一条地顺序执行,是结构化程序中最简单的结构。
- 选择结构:又称为“分支结构”,分支语句根据一定的条件决定执行哪一部分的语句序列。
- 循环结构:使同一个语句组根据一定的条件执行若干次。采用循环结构可以实现有规律地重复计算处理。
1.2 选择语句
选择语句也称为“条件语句”,就是对语句中不同条件的值进行判断,从而根据不同的条件执行不同的语句。
选择语句可以分为以下3种形式。
- 简单的 if 语句。
- if···else 语句。
- if···elif···else 多分支语句。
1.2.1 if 语句
简单的if语句用于针对某种情况进行相应的处理,通常表现为“如果满足某种条件,那么就进行某种处理”,它的一般形式为:
if 表达式:
语句块
其中,表达式可以是一个单一的值或者变量,也可以是由运算符组成的复杂语句。如果表达式的值 为真,则执行语句块,如果表达式的值为假,则跳过语句块,继续执行后面的语句,具体流程如下图所示。
【例1-1】使用if语句求出两个数的较小值。
# two_number.py
a, b, c = 4, 5, 0
if a > b :
c = b
if a < b :
c = a
print("两个数的较小值是:",c)
运行结果如下:
两个数的较小值是: 4
1.2.2 if···else 语句
“if···else”语句也是选择语句的一种通用形式,通常表现为“如果满足某种条件,就进行某种处理,否则进行另一种处理”,它的一般形式为:
if 表达式:
语句块1
else:
语句块2
其中,表达式可以是一个单一的值或者变量,也可以是由运算符组成的复杂语句。如果表达式的值为真,则执行语句块1,如果表达式的值为假,则执行语句块2,具体流程如下图所示。需要注意的是,else不能单独使用,必须和if一起使用。
【例1-2】判断一个数是奇数还是偶数。
# odd_even.py
a = 5
if a % 2 == 0 :
print("这是一个偶数。")
else :
print("这是一个奇数。")
运行结果如下:
这是一个奇数。
1.2.3 if···elif···else 多分支语句
“if···else···else”多分支语句用于针对某一事件的多种情况进行处理,通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理”,它的一般形式为:
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
···
else:
语句块n
其中,表达式可以是一个单一的值或者变量,也可以是由运算符组成的复杂语句。如果表达式1的值为真,则执行语句块1,如果表达式1的值为假,则进人 elif 的判断,依次类推,只有在所有表达式都为假的情况下,才会执行 else 中的语句,具体流程如下图所示。需要注意的是,elif和 else 都不能单独使用,必须和if一起使用。
【例1-3】 判断每天上课的内容。
# lesson.py
day = int(input("请输入第几天课程:"))
if day == 1 :
print("第1天上数学课")
elif day == 2 :
print("第2天上语文课")
else :
print("其他时间上计算机课")
运行结果示例:
请输入第几天课程:1
第1天上数学课
1.2.4 if 语句的嵌套
if 语句、 if···else 语句和 if···elif···else 语句3种选择语句可以相互嵌套。
例如,在最简单的if语句中嵌套if···else语句,形式如下:
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
再比如,在if···else语句中嵌套if···else语句,形式如下:
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
else:
if 表达式3:
语句块3
else:
语句块4
在开发程序时,需要根据具体的应用场景选择合适的嵌套方案。需要注意的是,在使用语句嵌套时,一定要严格遵守不同级别语句块的缩进规范。
【例1-4】判断是否为酒后驾车。假设规定车辆驾驶员的血液酒精含量小于20mg/100ml不构成酒驾,酒精含量大于或等于20mg/100ml为酒驾,酒精含量大于或等于80mg/100ml为醉驾。
# drunk-driving.py
alcohol = int(input("请输入驾驶员每100ml血液酒精的含量:"))
if alcohol < 20 :
print("驾驶员不构成酒驾")
else :
if alcohol < 80 :
print("驾驶员已构成酒驾")
else :
print("驾驶员已构成醉驾")
运行结果示例:
请输入驾驶员每100ml血液酒精的含量:15
驾驶员不构成酒驾
【例1-5】判断数学成绩属于哪个等级。成绩大于等于90分为优,成绩大于等于75分且小于90分为良,成绩大于等于60分并且小于75分为及格,成绩小于60分为不及格。
# math_score.py
math = int(input("请输入数学成绩:"))
if math >= 75 :
if math >= 90 :
print("数学成绩为优")
else :
print("数学成绩为良")
else :
if math >= 60 :
print("数学成绩及格了")
else :
print("数学成绩不及格")
运行结果示例:
请输入数学成绩:76
数学成绩为良
【例1-6】判断某一年是否闰年。闰年的条件:(1)能被4整除,但不能被100整除的年份都是闰年,如1996年、2004年都是闰年;(2)能被100整除,又能被400整除的年份是闰年,如2000年是闰年。不符合这两个条件的年份不是闰年。
# year.py
year = int(input("请输入年份:"))
if year % 4 == 0 :
if year % 100 == 0 :
if year % 400 == 0 :
flag = 1
else :
flag = 0
else :
flag = 1
else :
flag = 0
if flag == 1 :
print(year,"年是闰年")
else :
print(year,"年不是闰年")
运行结果示例:
请输入年份:1998
1998 年不是闰年
参考书籍:
Python程序设计基础教程(微课版) 林子雨 赵江声 陶继平编著