《Python语言程序设计》 —2.4 条件语句
2.4 条件语句
通过设置条件,可以使得某些语句在条件满足时才会执行。例如,如果一名学生某门课程的成绩小于60分,则输出“不及格”,否则不输出任何信息,那么可以按图2-5a所示流程编写程序。当然,在实际使用中,我们希望能给及格的学生也反馈一些信息,所以可以按图2-5b所示流程编写程序:当一名学生某门课程的成绩小于60分时,则输出“不及格”,否则输出“及格”。
图2-5 条件语句示例1
对于图2-5a和图2-5b所示的流程图,也可以分别改成如代码清单2-10和代码清
单2-11中所示的伪代码来描述。
代码清单2-10 图2-5a对应的伪代码
1 输入成绩并保存到变量score中
2 如果score小于60
3 输出“不及格”
代码清单2-11 图2-5b对应的伪代码
1 输入成绩并保存到变量score中
2 如果score小于60
3 输出"不及格"
4 否则
5 输出"及格"
接下来我们考虑更复杂的情况,进一步将大于等于60分的学生成绩分为优秀(90~100分)、良好(80~89分)、中等(70~79分)和及格(60~69分)。此时,就按图2-6所示的流程进行程序编写。
图2-6 条件语句示例2
对于图2-6所示的流程,也可以改成如代码清单2-12所示的伪代码来描述。
代码清单2-12 图2-6对应的伪代码
1 输入成绩并保存到变量score中
2 如果score小于60
3 输出"不及格"
4 否则,如果score小于70
5 输出"及格"
6 否则,如果score小于80
7 输出"中等"
8 否则,如果score小于90
9 输出"良好"
10 否则,如果score小于等于100 #显然,可以将条件去掉,直接改为"否则"
11 输出"优秀"
提示 在解决一个实际问题时,可以先使用流程图、自然语言或伪代码等形式描述数据处理流程(即算法设计),再按照设计好的流程(即算法)编写程序。这样,在设计算法时可以忽略具体代码实现,而专注于如何解决问题,有利于避免程序的逻辑错误。
在绘制流程图时,要求必须从“开始”出发,经过任何处理后必然能到达“结束”。另外,对流程图中使用的图形符号有着严格规定,“开始”和“结束”一般放在圆角矩形或圆中,数据处理放在矩形框中,而条件判断放在菱形框中。
代码清单2-12的第4行代码“否则,如果score小于70”中,虽然没有写“score大于等于60”,但因为是第2行代码“如果score小于60”不成立才执行的第4行代码的判断,所以在执行第4行代码时score必然是大于等于60的。对于第6、8、10行代码的判断也是类似的。在编写程序时,应尽量减少这种冗余的判断,以尽可能提高程序执行效率。
2.4.1 if、elif、else
在理解了条件语句的作用后,下面我们来看一下如何使用Python语言实现条件语句。条件语句的语法格式如下:
if 条件1:
语句序列1
[elif 条件2:
语句序列2
……
elif 条件K:
语句序列K]
[else:
语句序列K+1]
其中,if表示“如果”,elif表示“否则如果”,else表示“否则”。最简单的条件语句只有if,elif和else都是可选项,根据需要决定是否使用。
下面给出代码清单2-10~代码清单2-12对应的Python实现,具体参见代码清
单2-13~代码清单2-15。
代码清单2-13 代码清单2-10对应的Python实现
1 score=eval(input('请输入成绩(0~100之间的整数):'))
2 if score<60: #注意要写上":"
3 print('不及格')
代码清单2-14 代码清单2-11对应的Python实现
1 score=eval(input('请输入成绩(0~100之间的整数):'))
2 if score<60:
3 print('不及格')
4 else: #注意else后也要写上":"
5 print('及格')
代码清单2-15 代码清单2-12对应的Python实现
1 score=eval(input('请输入成绩(0~100之间的整数):'))
2 if score<60:
3 print('不及格')
4 elif score<70: #注意elif后也要写上":"
5 print('及格')
6 elif score<80:
7 print('中等')
8 elif score<90:
9 print('良好')
10 elif score<=100: #也可以改为"else:"
11 print('优秀')
提示 每一个语句序列中可以包含一条或多条语句。例如,将代码清单2-13改写为如下形式:
1 score=eval(input('请输入成绩(0~100之间的整数):'))
2 if score<60:
3 print('你的成绩是%d'%score)
4 print('不及格')
则第3行和第4行代码都是只有在score<60这个条件成立时才执行。
这里需要注意if语句序列中的这两条语句需要有同样的缩进,如果误写为
1 score=eval(input('请输入成绩(0~100之间的整数):'))
2 if score<60:
3 print('你的成绩是%d'%score)
4 print('不及格') #缺少缩进
则无论score<60这个条件是否成立,第4行代码都会执行。
- 点赞
- 收藏
- 关注作者
评论(0)