使用if语句控制流程

在文本编辑器里随便写点东西,然后点击关闭,程序会自动弹出一个框,询问用户是否保存这个文件。如果选了是,计算机就会储存这个文件;如果选择否,则放弃保存;如果选择取消,就会回到编辑界面。我们遇到的程序,都会根据用户不同的操作,返回不同的结果,我们称之为流程控制。我们首先来学习最简单的条件流程控制

 

  • if语句

我们在Python中,可以用if语句,来实现这种如果……就……的操作。
前一段时间联合国官微说15-24岁的人属于青年,那么让我们来写一个程序,用户输入其年龄,然后程序来判断用户为少年、青年、宝宝(大雾..还是老年吧~
首先,我们仍然使用input()的方法,引导用户输入自己的年龄,并将其赋值给变量age:

age = eval(input('请输入您的年龄:'))

下面,我们先口头对需要判断的条件做一个梳理:
如果age < 15,那么用户属于’少年’;
如果15<= age <= 24,那么用户属于’青年’;
如果24 < age < 60,那么用户属于’宝宝’;
如果age >= 60,那么用户属于’老年’。

Python中,我们用if(如果),elif(又如果),else(其他)来实现根据不同条件控制程序流程,首先观察:

age = eval(input('请输入您的年龄:'))
if 0 < age < 15:
    print('您是位少年~')
elif 15 <= age <= 24:
    print('您是位青年~')
elif 24 < age < 60:
    print('您是个宝宝')
elif age >= 60:
    print('您是老年人~')

我们发现,书写格式为:在if或elif之后写上需要判断的条件——输入冒号——另起一行——按下键盘TAB键(大写锁定的上方)对新行进行缩进——写出当条件为True时需要执行的命令。

注意,使用TAB键缩进后,我们按下回车另起一行,光标将自动延续上一行的缩进。如果此时if或者elif控制的内容已经写完,我们需要按下backspace(Mac键盘的delete)来取消缩进。

让我们首先保存这个文件,然后按下F5运行测试一下,如果一切正常~ 那么你已经学会了如何运用条件判断来控制Python运行的流程~ 下面,我们来讨论几个问题:

 

  • 使用else语句

我们假设有人在程序里面输入了一个负数:

请输入您的年龄:-233
您是位少年~

这显然不太合理。我们还有一个else语句,用以控制if和elif判断条件之外的情况——else语句必须写在同一组if和elif的后面,并且只能有一个else。其写法很简单,观察下面“改进版”程序:

age = eval(input('请输入您的年龄:'))
if 0 < age < 15:
    print('您是位少年~')
elif 15 <= age <= 24:
    print('您是位青年~')
elif 24 < age < 60:
    print('您是个宝宝')
elif age >= 60:
    print('您是老年人~')
else:
    print('您输入的年龄有误')

我们对这个文件进行保存,然后按F5进行测试:

请输入您的年龄:-666
您输入的年龄有误

 

  • 程序的逻辑

这两年数学高考中都会出现流程图这样的考题,实际上,对应我们上面写的Python程序,也是有一个运行的流程的,现在我们来具体观察这个流程:

age = eval(input('请输入您的年龄:'))
if 0 < age < 15:
    print('您是位少年~')
elif 15 <= age <= 24:
    print('您是位青年~')
elif 24 < age < 60:
    print('您是个宝宝')
elif age >= 60:
    print('您是老年人~')
else:
    print('您输入的年龄有误')

在这个程序中,第二、四、六、八、十行行分别是五个条件——其中,第二行的条件由if引导,四、六、八行由elif引导,第十行由else引导。

在Python中,程序首先按照代码行数的顺序运行

当碰见if语句,程序会检查if之后的条件是否为True,如果成立,那么Python开始运行if之后有缩进的语句,(也就是开头我们按了TAB键的语句),同时,Python会直接跳过if后续的所有elif、else语句包括elif、else语句下方缩进的内容

如果程序检查到if之后的条件为False,那么if下方缩进的所有语句,将直接被跳过,此时,程序开始按照行顺序检查第一个elif之后的条件是否成立,同样,elif之后的条件成立,则执行对应的命令,并跳过其余的elif、else语句包括其余elif、else下方缩进的内容,以此类推。

最后,只有当所有的if与elif条件检查均为False时,Python才会执行else下方的命令。

有的小伙伴会问啦,那看样子if和elif功能是一样的啊,那为什么不将程序写成:

age = eval(input('请输入您的年龄:'))
if 0 < age < 15:
    print('您是位少年~')
if 15 <= age <= 24:
    print('您是位青年~')
if 24 < age < 60:
    print('您是个宝宝')
if age >= 60:
    print('您是老年人~')
else:
    print('您输入的年龄有误')

这是因为,当我们采用elif写法的时候,如果Python判断开头的if条件为True,那么下方所有的elif会被跳过。而当我们全都写作if的时候,即便第一个if已经判断为Ture,Python依然会检查第二个、第三个 …… if后面的条件。在我们这个例子中,这是没有必要的,因此这给程序增加了不必要的运算,降低了运行速度。

 

  • 关于缩进

在Python中,规范使用缩进是很重要的,对比以下两段代码:

if age > 60:
    print('您是老年人')
    print('再见')
if age > 60:
    print('您是老年人')
print('再见')

在第一段中,print(‘再见’)相对if条件句有缩进,因此,只有当if条件为True的时候,程序才会打印“再见”。
在第二段中,print(‘再见’)相对if条件句无缩进,因此,Python将在if条件句执行完毕之后,打印“再见”。

学习到后期,我们在一个程序中会出现很多的缩进语块。有个笑话讲:问:”学习Python需要准备什么呀?“答:“需要一本教材、一台计算机、一个游标卡尺。”就是说后期代码写的很长的时候,如果教材翻页了,你就需要用尺子去量一量每句代码到底做了多少次缩进(掩面。。。

在我们使用的文本编辑器中,按下TAB键,会自动完成一次缩进,默认为四个半角空格。本节我们碰到的只需缩进一次,后期会有多次缩进的情况。因此,我们在书写代码时,不要手动打空格,统一使用TAB键进行缩进。

 

  • 本节练习

BMI指数,是用体重(公斤)除以身高(米)的平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。请写一个程序,让用户输入体重(kg)、身高(m),程序按照下表判断并打印其胖瘦程度:

BMI

体型

18.5(含)以下

偏瘦

18.5(不含)到24(不含)

正常

24(含)到28(不含)

超重

28(含)以上

肥胖

看答案

weight = eval(input('请输入您的体重(单位:公斤):'))
hight = eval(input('请输入您的身高(单位:米):'))
bmi = weight / (hight**2)

if 0 < bmi <= 18.5:
    print('您的体型偏瘦')
elif 18.5 < bmi < 24:
    print('您的体型正常')
elif 24 <= bmi < 28:
    print('您的体型超重')
elif bmi >= 28:
    print('您的体型肥胖')
else:
    print('您输入的身高或体重有误')

酱哦


如果还有什么问题或者发现了文章的错误,欢迎给我留言!邮箱可以随便乱写~

发表评论

电子邮件地址不会被公开。 必填项已用*标注