暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

《数据与计算》第11课时:Python选择结构

李sir的信息技术课堂 2021-02-26
691


在前两节课,老师带领你们攻克了如何与Python互动沟通的语言大关,并通过三种数据类型(字符串、整数和浮点数)的相互转换,突破现实世界和程序世界数据差异的墙,将代码成功执行。但这是远远不够的,要让Python完成自动化任务甚至具备智能,还需要正确的【沟通逻辑】才能让Python准确地执行你的命令,而最常用的【沟通逻辑】是如果…就…逻辑——条件判断,其作用就是明确地让计算机知道:在什么条件下,该去做什么。

1
学习目标

1、使用选择结构分析解决问题,培养计算思维;

2、能够正确的使用关系表达式和逻辑表达式来描述条件

3、尝试并掌握Python的if语句

上节闯关回顾:

3、体重指数在一定程度上反映了一个人的健康水平,也能为我们下一步的行动方向提供依据。体重指数(bmi)的计算方法为:

体重指数=体重(kg)/(身高(m)²)

设计程序,计算某同学的体重指数。输出的具体格式为:“你的身高体重指数为bmi”


算法描述:

第1步:分别输入体重w、身高h;

第2步:根据已有公式计算出bmi(即体重指数)的值             ;

第3步:输出bmi。


让学生自己写程序,教师巡回指导,解决学生出现的问题。

w=float(input('请输入体重:'))

h=float(input('请输入身高:'))

bmi=w/h**2               

print('体重指数为:' ,bmi)

尝试:格式化输出。把以上程序中的最后一句改为:print("体重指数为:" format(b, ' .2f ')),运行并观察结果,尝试总结format的用法。

2
新知新讲


条件判断的三种形式:

单分支:if

双分支:if…else…

多分支:if…elif…else…


if 后面要跟关系表达式来进行判断。

比较运算符

==!=<<=>>=
等于不等于小于小于等于大于大于等于

比较运算符和两个数值表达式可以构造出一个关系表达式,其意义在于判断两个数值之间的特定的关系是否成立。

逻辑运算符

用一个比较运算符可以比较两个数值(表达式)之间的一种关系,但是却不能够描述更复杂的关系。比如.三角形的三边关系,仅用比较运算符不能完全判断,这时候,就需要写一个组合判断。
只需要三个逻辑组合运算符就足以描述所有的组合判断:
(1)A与B,表示A和B都成立的组合判断
(2)A或B,表示A与B中至少一个成立的组合判断
(3)非A,表示A不成立的组合判断

orandnot
或(或者)非(否定)
  • or 和 and 是二元运算符

  • not 是一元运算符

  基于比较和逻辑运算符构造的表达式是逻辑表达式。为了书写方便,python允许连续使用比较运算符。

x > 1 and x < 10可以写成 1 < x<10。类似的 10 < x >y 也是允许的,但是并不常见。



优先级和结合性

比较运算符的优先级低于算术运算符

逻辑运算符的优先级低于比较运算符

我们可以用变量a,b,c表示三角形的三边长,来构造判断条件:>>> a > 0 and b > 0 and c > 0 and \a + b > c and b + c > a and a + c > b       #表达式很长,用 \ 续行符进行续行


单分支:if

双分支:if…else…

多分支:if…elif…else…

它们的具体格式为:

单分支:满足一定条件时,执行特定语句,适合比较简单的判断。

if 判断条件:

    执行语句……


双分支:满足某个条件时,执行特定语句1,否则执行语句2。if和else所代表的条件是对立的

if 判断条件:

    执行语句1……

else:

    执行语句2……


多分支:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。并且,当判断的条件超过3个时,中间的多个条件都可以使用elif。程序运行时会按照从上到下的顺序挨个试一遍,看自己满足哪个条件,满足了就不往下走,不满足就继续试,试到出结果为止。注意:各个语句中的判断条件是互斥的,else可以省略。

if 判断条件1:

    执行语句1……

elif 判断条件2:

    执行语句2……

elif 判断条件3:

    执行语句3……

else:

    执行语句4……


同学们注意到if语句的格式有什么特点吗?

在这里,你可能注意到了一个细节:在判断条件后面是一个冒号:、下一行的执行语句,会空几个格,但这是为什么呢?

首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进。

对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键

并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。(同学们可以试一下)

此时,被缩进的内容(执行语句)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令。这意味着:如果满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。

当执行语句为单语句时,你也可以在同一行的位置上使用if条件判断语句,如下实例:

if a>10:print('a比10大')

else:print('a不比10大')


3
学以致用

感觉自己讲得挺明白的,其实学生还是不太理解,所以下面通过具体的任务,让学生自己编写代码,运行体验,以更好的掌握if语句的用法。

基础任务
体重指数分类正常范围非正常范围
参考标准18.5~23.9其他

根据上表,使用双分支if语句完成判断体重指数是否处于正常范围的判断过程。

参考代码:

w=float(input('请输入体重:'))

h=float(input('请输入身高:'))

bmi=w/h**2

if 18.5<=bmi<=23.9: 

    print('您的体重指数处于正常范围!') 

else:

    print('您的体重指数处于非正常范围!')

进阶任务

体重指数分类

体重过低

正常范围

超重

参考标准

<18.5

18.5~23.9

>23.9

根据体重指数判断身体的健康情况,从而采取应对措施,请参照上表使用多分支if语句完成判断过程,并给出相应建议。

参考代码:

w=float(input('请输入体重:'))

h=float(input('请输入身高:'))

bmi=w/h**2

if  bmi>23.9:  

    print("您有点超重了,建议少吃多锻炼!")

elif bmi>=18.5:

    print("您的身体较健康,请继续保持!")

else:

    print("您太瘦了,建议加强营养和锻炼!")


学生在完成任务的过程中还是会出现很多问题,比如中文标点问题,需要再次强调使用英文符号,比如关系运算符的问题,==表示相等关系,=表示赋值运算。还有很多学生都只使用了单分支if语句,代码基本是下面这样的:

w=float(input('请输入体重:'))

h=float(input('请输入身高:'))

bmi=w/h**2

if  bmi>23.9:  

    print("您有点超重了,建议少吃多锻炼!")

if 23.9>=bmi>=18.5:

    print("您的身体较健康,请继续保持!")

if bmi<18.5:

    print("您太瘦了,建议加强营养和锻炼!")

这时可以通过设置出错点,让学生来理解elif和else的作用范围。比如把最后一个if语句改为else,让学生思考并输入三种数据来测试。

if  bmi>23.9:  

    print("您有点超重了,建议少吃多锻炼!")

if 23.9>=bmi>=18.5:

    print("您的身体较健康,请继续保持!")

else:

    print("您太瘦了,建议加强营养和锻炼!")

学生会发现当输入一个超重的数据时,程序会出错,既输出超重又输出太瘦,因为条件范围出现了交叉,这样就能更理解程序运行的过程。然后再将第二个if修改为elif,让学生思考有没有可以改进的地方?

if  bmi>23.9:  

    print("您有点超重了,建议少吃多锻炼!")

elif 23.9>=bmi>=18.5:

    print("您的身体较健康,请继续保持!")

else:

    print("您太瘦了,建议加强营养和锻炼!")

elif后条件可以改为bmi>=18.5,<=23.9为什么可以去掉?这样学生就能理解elif后的条件是在前面条件的补集基础上进行判断,然后再引发思考第一个if的条件该怎样判断才是最优的。

文章转载自李sir的信息技术课堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论