在上节课中,我们学习了布尔表达式中的布尔数、比较运算和逻辑运算。
如图所示,布尔表达式表示了两类结果, True 还是 False。
相信你肯定有这样的疑问,这些布尔表达式有什么作用呢?其实,主要的用处是在判断语句中。
判断在计算机世界里无处不在。
比如打开某个 App 时,程序会做一个是否已注册的判断。
如果已注册(True),那么进入首页。如果未注册(False),那么进入注册页面。
程序需要判断 App 是否被点击,判断用户是否已注册,根据不同的条件触发不一样的动作。
在编程语言中,可以用“判断语句”来处理这类判断问题。
判断语句 Judgment Statement
定义:
判断语句是程序的三大语句结构之一。
它的作用是根据判断的条件是否成立(真或假),来决定后续代码执行顺序。
隐喻:
C选项错误。
不属于判断语句。
这段代码演示了一个简单的判断语句。它将两个人的年龄进行了比较判断。
下面我们来学习判断语句的具体写法。
B 选项正确。
注意,在这里条件是不成立的,所以程序不会运行print(“我的年龄比你大”),会直接运行print(“我们是同学”)。
题目
如果 myWeight 小于 yourWeight,则输出 “You are heavier than me.”。Tips: 别忘了,在执行语句前面加4个空格。
myWeight = 70.5 yourWeight = 81.3 if myWeight < yourWeight: print("You are heavier than me.")
题目
给一个变量 myScore 赋值50,如果 myScore 小于60,则输出“挂科了”,再运用格式化输出“你的分数是{myScore}”。
myScore = 50 if myScore < 60: print("挂科了") print(f"你的分数是{myScore}")
前面有提到 if 是关键字,那什么是关键字呢?
关键字是 Python 中一些已经被赋予特定意义的单词,不能被用来作为变量名,函数名,类名等(函数和类后面的课程会讲到)。
关键字 Keyword
定义:关键字是程序语言中有特殊意义的单词,它们都不能被当作变量名使用。
在我们已经学过的知识里,and,or,not,True,False都是关键字。
此外,由于变量名区分大小写,所以 if 不能作为变量名,但 IF 、If、iF可以。
A 选项错误。
and、or、not是关键字,不可以作为变量使用。
C 选项正确。
变量名区分大小写,if 不能作为变量名,但 IF 、If、iF可以。
B 选项正确。
A、C 选项中 and 和 if 是关键字,D 选项中 == 用于判断引用变量的值是否相等。
很好,现在你已经了解了 if 判断的基本用法。
由前文可知,满足 if 条件后执行的每行代码前都会有四个空格,这四个空格在 Python 中叫做“缩进”。
缩进 Indentation
在Python中,缩进的数量不做强制的要求,可以 1 个空格,可以 2 个空格。
我们会建议每个缩进用 4 个空格,这是一种比较美观易读的代码风格。
C选项正确。
第三行代码缩进的空格数量与上两行不一致,形成了不同层级的代码。
那我们在什么情况下,才需要缩进代码呢?
首先,我们需要知道连续缩进且空格数量相同的代码称为一个“代码块”。
而同一代码块中的代码需要遵守代码的默认执行顺序,即自上而下执行。
代码块 Code Block
定义:
同一层级的代码集合叫做代码块,代码块中的代码会按由上至下的顺序执行。
在 Python 中,通过缩进来划分代码块。
通过前面的学习我们知道了,if 判断后面跟随条件,如果条件成立,程序执行归属于 if 判断的一个代码块。
这时候就需要使用缩进组织代码块,区分代码的层级。
题目:
昨天是2021年1月20日
今天是2021年1月21日
明天是2021年1月22日
todayDate = 20210121 if todayDate == 20210121: print("昨天是2021年1月20日") print("今天是2021年1月21日") print("明天是2021年1月22日")
之前的学习中,我们只考虑了在判断单个条件的情况下,代码该如何编写。
假设,这时需要多个判断条件,该如何编写代码呢?
例如:Tony的年龄是12岁,Kevin的年龄是11岁。判断谁的年龄更大,然后输出他的名字。
我们需要考虑两种情况:
1. 如果 Tony 比 Kevin 大,输出 Tony 的名字;
2. 如果 Tony 比 Kevin 小,输出 Kevin 的名字。
在这里,连续使用两个 if 判断就可以得到结果,编写出来的代码如图所示。
题目:
谁的年龄更大
Tony的年龄是12岁,Kevin的年龄是11岁。让程序判断谁的年龄更大,然后输出他的名字。
1.将12赋值给tonyAge,将11赋值给kevinAge;
2.判断tonyAge与kevinAge的大小;
3.谁的年龄更大就输出他的名字。
tonyAge = 12 kevinAge = 11 if tonyAge > kevinAge: print("Tony") if tonyAge < kevinAge: print("kevinAge")
现在,我们就学习完了 if 判断基本结构和编写方法。
同学们在刚接触 if 判断时,最容易出现以下两种 bug:
1. 缩进问题
同一代码块缩进需要保持一致,建议每个缩进用 4 个空格。
if 判断中,布尔表达式后面的冒号常常被遗漏,这是判断语句的固定格式。
if 判断语句需要大量用到逻辑运算里的 True 和 False。
比如“你注册了么”,“今天天气是不是晴天”,“你的年纪是不是比我大”等等。
所以判断语句和比较运算、逻辑运算的联系是非常紧密的。
比如我们想要趁双十一打折买一个耳机,就需要考虑两个条件:
第一,是否是“双十一促销”。
第二,我账户余额够不够。
判断这种现实生活中的问题往往不只一个条件。
有了判断语句,我们就可以打破代码的默认执行顺序了(按由上至下的顺序执行)。
如图,两段代码里都有一行代码是不会执行的。
判断语句“里面”的代码块只有当判断布尔表达式为真的时候才会执行。
通过判断语句,我们可以让程序按照不同条件自动化执行任务。
比如你在网上买了一件商品,在支付环节可以选择银联、支付宝或微信进行支付。
这个时候你的不同点击动作都会成为执行不同判断语句的依据。
本节课学习了单向选择的判断。
我们来总结一下本课的知识点:
题目
小明可以买鞋吗?
可以购买输出字符串yes,不可以购买输出字符串no。
price = 500 balance = 600 if price < balance: print("yes") if price > balance: print("no")
题目
今天需要跑步吗?
在一个阳光灿烂的日子里,路飞吃了3个鸡腿,他今天需要跑步吗?需要跑步输出yes;不需要跑步输出no。
最后,再运用格式化输出:
今天吃了{drumStick}个鸡腿
例如,他今天吃了10只鸡腿,得到的输出如下:
yes 今天吃了10个鸡腿
drumStick = 3 if drumStick > 5: print("yes") if drumStick < 5: print("no") print(f"今天吃了{drumStick}个鸡腿")
题目
直角三角形
判断这个三角形是否为直角三角形。若是,则输出“是直角三角形”,若不是,则输出“不是直角三角形”。直角三角形的计算公式为:a*a+b*b=c*c