《Python语言程序设计》 —2.4 条件语句

举报
华章计算机 发表于 2019/11/18 20:06:49 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第2章,第2.4节,作者是王恺 王志 李涛 朱洪文。

2.4 条件语句

通过设置条件,可以使得某些语句在条件满足时才会执行。例如,如果一名学生某门课程的成绩小于60分,则输出“不及格”,否则不输出任何信息,那么可以按图2-5a所示流程编写程序。当然,在实际使用中,我们希望能给及格的学生也反馈一些信息,所以可以按图2-5b所示流程编写程序:当一名学生某门课程的成绩小于60分时,则输出“不及格”,否则输出“及格”。

 image.png

图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所示的流程进行程序编写。

 image.png

图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行代码都会执行。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。