Python基础教程——条件判断

欢迎来到今天的 Python 课堂。

为了深化对所学知识的理解,在开始本节之前,我们先来对上一次进行简单的知识回顾。

上节我们学习了可以从终端获取键盘输入内容的 input(),以及字符串可以使用转义字符 \n 进行换行操作。

同时学习了格式化字符串的方法 str.format(),这个是重点,同学们要记得及时复习。

最后我们还学习了可以对数据类型进行转换的 int()、str()、float(),以及获取数据类型的 type()

以上就是我们上一节的大致知识点,要多保持回顾知识点的习惯哦,这样才有助于我们进行后面关卡的学习。

进入正题之前,我们来看看这节的学习内容。

本节课主要知识点是“条件判断语句”和“条件判断嵌套”。

“条件判断语句”在这节课的占比大,是重要知识点,要着重学习。

1.控制流

我们大多数程序都是按照顺序执行,类似下方的程序。

course = '条件判断语句'
content = '本节课重要知识点为:' + course
print(content)

我们来梳理一下这个程序的运行顺序:

第一句执行赋值语句 ——> 第二句执行字符串拼接并赋值 ——> 第三句执行打印语句。

这种从上到下一行一行执行的流程,属于控制流的其中一种结构:顺序结构。

到这里你也许会问,什么是控制流呢?

其实控制流指的是控制程序的执行流程,实现不同逻辑的处理。

控制流有三种结构:顺序结构、循环结构分支结构

顺序结构就是类似上面的执行流程。而循环结构我会在接下来的章节讲解。

最后一种结构:分支结构,也就是我们本节的知识点:“条件判断语句”。

2.条件判断语句

条件判断语句是根据不同条件的结果,执行不同的代码块。如果条件满足,就执行该条件下的代码块,否则执行其他操作。

本地运行下方的程序,程序会让我们输入两次,请你第一次在终端输入"可以",然后按下回车键 enter,看看会输出什么结果。第二次在终端输入"能",再按下 enter,看看会不会有其他的效果。

study = input("我们可不可以顺利学完Pyhon?")
if study == "可以":
print("我相信你可以的")

study = input("我们可不可以顺利学完Pyhon?")
if study == "可以":

print("我相信你可以的")

运行结果:

是不是很神奇?输入不同的内容,程序会产生两种完全不同的执行结果。

那么程序是怎么实现根据不同条件,执行不同结果的呢?按照上面的代码:

第二、三行是条件判断语句,其中 if 的意思是“如果”,if 后的 study == “可以” 是条件,这样看起来逻辑就很清楚啦。

如果条件为真,就执行下面的语句,如果条件为假,就不执行。

那怎么去判断真假呢?

对于真假,我们可以用一种数据类型来表示,它就是 —— 布尔类型。

2.1 布尔类型

布尔类型通常用来表示条件是否成立,只有两个值:True 和 False,也就是真和假。

而 True 和 False,也叫做布尔值。

结合我们代码里的 study == “可以”,当结果为真(即 True)时,if 语句才会执行它的代码块:print() 语句。

好,我们再进一步分析,这里的 study == “可以” ,它是一个表达式。

什么是表达式?通常来说,表达式是由运算符和数据组成。这里的 “==” 就是表达式里的运算符,用来判断运算符两边的数据是否相等,如果等号两边的数据完全相同,则表达式的结果为 True。

这里要提个醒,我们要注意 “=” 和 “==” 的区别。

在现实生活中,“=” 是等于的意思。但在 Python 中,“=” 是赋值运算符,“" 是全等运算符,判断数据是否相等要使用 "” ,不要混淆了哈。

回到我们的表达式 study == “可以”,我们可以通过 print() 来查看这个表达式的布尔值是什么。

本地运行下面代码,输入"可以"后,看看终端是不是打印出 True。

# 使用 input() 获取终端输入的值,再赋值给变量 study
study = input("我们可不可以顺利学完Python?")
# 打印表达式的布尔值
print(study == "可以")

运行结果:

如果输入的是"可以",终端是会显示 True。输入其他内容,看看是不是打印出 False。

可以体验到全等运算符 “==” 的强大了吧?不过它只是比较运算符里的其中一种,我给你拓展一下其他比较运算符吧。

2.2 比较运算符

比较运算符用于对数据进行比较。如果这种比较是成立的,则结果为 True(真),反之则结果为 False(假)。

除了上面介绍过的 “==” 外,我们的比较运算符还有 “!=”、“>”、“<”、“>=”、“<=”。

我们先运行下面的练习题,来看看其它运算符的功能吧。(复制到本地运行即可)

if 520 == 520:
print("静夜思")
if 520 != "520":

print("李白")``if 520 > 250:

print("床前明月光")``if 520 < 250:

print("疑似地上霜")``if 520 >= 250:

print("举头望明月")``if 520 <= 250:

print("低头思故乡")

结果是不是"静夜思、李白、床前明月光、举头望明月"?

好像少了两句,那么肯定是有两个表达式的结果为 False,导致没有执行其代码块里的打印语句。

首先,我们把表达式都单独拿出来 print() 一下,看看它们的布尔值。

print(520 == 520)``print(520 != "520")``print(520 > 250)``print(520 < 250)``print(520 >= 250)``print(520 <= 250)

代码结果:

第一行的 “==” 代表的是相等,用来判断运算符左右两边的数据是否相等,如果是则结果为 True。这里 520 等于 520 的条件成立,所以结果是 True。

第二行的 “!=” 代表的是不相等,用来判断运算符左右两边的数据是否不相等,如果是则结果为 True。这里 520 与 “520” 的数据类型不一致,不等于的条件成立,所以结果是 True。

第三行的 “>” 代表的是大于,用来判断运算符左边的数据是否大于右边的数据,如果是则结果为 True。这里 520 大于 250 的条件成立,所以结果是 True。

第四行的 “<” 代表的是小于,用来判断运算符左边的数据是否小于右边的数据,如果是则结果为 True。这里 520 小于 250 的条件不成立,所以结果是 False。

第五行的 “>=” 代表的是大于等于,用来运算符左边的数据是否大于或等于右边的数据,如果是则结果为 True。这里 520 大于等于 250 的条件成立,所以结果是 True。

第六行的 “<=” 代表的是小于等于。用来判断运算符左边的数据是否小于或等于右边的数据,如果是则结果为 True。这里 520 小于等于 250 的条件不成立,所以结果是 False。

而我们的运算符间也可以组合使用,比如说要让你猜一个人的年龄范围,只要你输入的值在 20 ~ 25 之间就算你猜对了,那我们可以这样实现:

# 使用 input() 获取终端输入的值,通过 int() 转换该值的数据类型为整数,再赋给变量 age
age = int(input('猜猜我的年龄:'))

# 判断 age 的值是否大于 20 且 小于等于 25
if 20 < age <= 25:
print('猜对啦')

你自己可以试着组合不同运算符来使用看看哦。

现在理解不同比较运算符的使用了吗?我们再来巩固一下比较运算符的知识点吧。

# 请把下面的 [] 替换为一个比较运算符,使我们终端打印出 True。

print(1 + 1 [] 3)

我的答案是这样的:

# 当比较运算符左边的数据小于右边时,表达式的结果为 True
print(1 + 1 < 3)

除了比较运算符可以获得表达式的布尔类型以外,我们还可以通过布尔类型之间的运算得出布尔值,这时就要使用另一种运算符:逻辑运算符。

2.3 逻辑运算符

逻辑运算符用于数据的布尔值比较。运算符两边的表达式先运算得出布尔值,再执行逻辑运算符。它有这几种:and(与)、or(或)、not(非)。

请运行下面的三段代码,观察结果。之后就可以去总结逻辑运算符的运算规律了,运行下方代码,观察 and 运算符的运行结果,先简单了解一下即可:

print(True and True)
print(True and False)
print(False and True)
print(False and False)

接着运行下方的代码,观察 or 运算符的运行结果:

print(True or True)
print(True or False)
print(False or True)
print(False or False)

再运行下方的代码,观察 not 运算符的运行结果:

print(not True)
print(not False)

相信你已经感受到了,三种运算符进行布尔值的逻辑运算时,会产生不同的结果,那么它们的运算规律是什么呢?尝试自己总结一下。

你也可以用这三条口诀来记住它们哦:

and 口诀:真真为真,假假为假,真假,假真,真假相不为真;

or 口诀:真真为真,假假为假,真假,假真,真假相仍为真;

not 口诀:真反为假,假反为真,真变假,假变真,真假口诀要记清。

现在我们知道三种逻辑运算符对布尔值的运算结果了,我们再结合刚刚所学的比较运算符,把代表着布尔值的表达式放进逻辑运算符中。

print(2 > 1 and 2 > 3)

上面运行的结果是什么?本地运行一下试试吧。

现在,我们来总结一下逻辑运算符的知识。

讲完怎么判断表达式的真假,现在回来看 if 语句,是不是清晰很多啦?👇

study = input("我们可不可以顺利学完Python?")
if study == "可以":

print("我相信你可以的!")

不过先不要急着动手写哦,要写出正确的条件判断语句,我们得注意一下书写格式。

2.4 单分支结构 if 语句

你仔细看上面👆这个代码,它只包含一个 if 语句,这是条件判断语句中一种最简单的结构:单分支结构 if 语句。

一个 if 语句包含有五个要素:

① 关键词"if";② “条件”;③ 英文冒号":";④ 缩进;⑤ 代码块

第一个注意点是关键词 if 后有个空格,才能加上条件,否则程序会报错;

第二个注意点是条件后面的冒号必须是英文冒号,否则程序会报错,并提示 “SyntaxError: invalid character in identifier”(标识符中有无效字符);

第三个注意点是缩进,一个缩进是四个空格或一个 Tab 键,代码块前一定要加缩进,而且缩进不要混用 Tab 和空格

第四个注意点是代码块,它的意思是一组代码内容。

了解完 if 语句的五个要素以后,我们来体验一下,看看缩进不当导致的报错

name = input("主角的名字是:")

if name == "知枫":
print("他的名字是知枫")

上面这个代码由于第 3 行缺少了缩进,导致了程序报错。

所以我们在写代码的时候,一定要注意好语法格式,不然程序报错就跑不出我们想要的效果啦。

接下来我们来尝试写一个符合语法格式的 if 语句:

结合比较运算符 “==” 写一个程序。程序运行后,输入 “Python” 可以在终端显示"该技能暂不能写进知枫的简历里"。

# 使用 input() 获取终端输入的值,并赋给变量 skill
skill = input("知枫拥有的技能:")
# 判断变量 skill 的值是否为 "Python"
if skill == "Python":
# 如果 if 语句的条件满足,就执行下方的打印语句
print("该技能暂不能写进知枫简历中")

代码执行后,如果我们输入的值正确了,就会执行其代码块的打印语句。

我们想要写出"如果 Python 技能达到 90 分以上就写进简历,否则暂不能写进简历中",那用 Python 该怎么写出来?

我们可以使用 if…else… 语句,就有了另一种选择 ——【如果…就…;否则就….】

还是先通过代码来感受一下 else语句的功能。

point = int(input("知枫 Python 当前的分数为:"))
if point >= 90:
print("可以写进简历")
else:
print("暂不可写进简历")

我来讲解一下代码。

第一行,input() 获取终端输入的值,由于数据类型是字符串,需要通过 int() 转换为整数。我们在上一关学习过 int() 是如何使用的,这里我采取了一种更直接的方法,我们可以将 input() 输入的数据直接转换完数据类型后再赋给变量 point;

第二行,if 语句的条件是 “point >= 90”,如果 point 的值大于或等于 90 ,就会执行 if 语句的代码块,即第 3 行的打印语句;

如果 point 的值不满足 if 语句的条件,程序就会选择 else 语句的代码块,即执行第 5 行的打印语句;

这里 else 语句实现的是【如果…就…;否则…】中【否则…】的功能。

else 语句在语法上需要 ① 关键词"else";② 英文冒号":";③ 缩进;④ 代码块。

细心的你应该发现了,上方相同缩进的其他条件判断语句都不符合时,才会执行 else 语句,所以 else 语句是不需要写条件的,且在一个条件判断语句内,需要与有相同缩进的 if 语句连用。

if (条件):
print("if 语句")
else:
print("else 语句")

我们本地运行一下下方的代码,请输入60以上的数字。

point = int(input("知枫 Python 当前的分数为:"))
if point >= 90:
print("可以写进简历")
elif point >= 60:
print("可以写,但是建议先多学点知识哦")

第 1 行,input() 得到的是一个字符串,通过 int() 转换数据类型后,再赋值给变量 point;

第 2 行,if 语句的条件是 “point >= 90”,即如果 point 的值大于或等于 90 的时候,就执行第 3 行的打印语句;

如果输入的数据不满足 if 语句的条件,程序就会跑到第 4 行与 elif 语句的条件进行判断,如果 point 的值大于等于 60,执行第 5 行的打印语句。

elif 语句的语法格式跟 if 语句类似,只需要将关键词换为 elif。但有个地方要注意的是,elif 语句需要与同缩进的 if 语句对齐连用,不能单独使用。

再结合 else 语句,把代码补全,完成我们的选择【如果…就…;如果…就…;否则就….】。👇

# 使用 input() 获取终端输入的值,通过 int() 转换该值的数据类型为整数,再赋给变量 point
point = int(input("知枫 Python 当前的分数为:"))
# 如果 if 语句的条件成立,就打印"可以写进简历"
if point >= 90:
print("可以写进简历")
# 如果 elif 语句的条件成立,就打印"可以写,但是建议先多学点知识哦"
elif point >= 60:
print("可以写,但是建议先多学点知识哦")

对于 elif 语句,我还有个知识点给你拓展。一个分支结构可以存在多个 elif,且 elif 后可以不接上 else。

比如上面的例子,我们再增加多一个确切的判断:如果 Python 的分数低于 30 分时,提示“快去学习”,那么程序就可以这么写。

# 使用 input() 获取终端输入的值,通过 int() 转换该值的数据类型为整数,再赋给变量 point
point = int(input("知枫 Python 当前的分数为:"))
# 如果 if 语句的条件成立,就打印"可以写进简历"
if point >= 90:
print("可以写进简历")
# 如果 elif 语句的条件成立,就打印"可以写,但是建议先多学点知识哦"
elif point >= 60:
print("可以写,但是建议先多学点知识哦")
# 如果第二个 elif 语句的条件成立,就打印"快去学习"
elif point < 30:
print("快去学习")

我们多分支结构 if…elif…else… 语句也讲完了,现在我们来总结一下。

3.条件判断嵌套

如图所示,我们要用条件判断语句来实现这个功能,第一步需要判断我们在终端获取的技能名是什么,如技能名为 Python 或吉他。接着,再进一步判断这项技能的分数是否满足写进简历的标准。

这种在外层条件满足的前提下,再增加额外的判断的过程,就是条件判断嵌套。

我已经把程序写好啦,一起来看看:

skill = input('知枫现有的技能:')
score = int(input('该技能的分数为?'))

if skill == 'Python':
if score > 90:
print('Python 可以写进简历')
else:
print('Python 暂不可以写入简历')
elif skill == '吉他':
if score > 50:
print('吉他可以写进简历')else:
print('吉他暂不可以写入简历')

猜猜看,如果我们输入"Python",再输入60,程序最后会打印出来什么?(自己本地运行一下试试吧)

终端显示的内容是不是"Python 暂不可以写入简历"呢?

这种一个条件判断语句内嵌套多个条件判断语句的形式,就是我们的条件判断嵌套。

我给你讲讲条件判断嵌套的执行流程吧。

3.1 条件判断嵌套的执行流程

首先,我们可以把原代码进行概括,来看下图:

这里代码块①②的四条语句相对于外层条件判断语句有同样的缩进,所以他们是一个代码块。

而这里的代码块①②的内容刚好是条件判断语句,我们可以先不看代码块内的这些条件判断语句。

先看外层的条件判断语句。

skill = input('知枫现有的技能:')
score = int(input('该技能的分数为?'))
if skill == 'Python':
(代码块 ①)
elif skill == '吉他':
(代码块 ②)

我们输入 “Python” 赋给变量 skill ,再输入 60 赋给变量 score 后,程序会在外层的条件判断语句进行判断,刚好满足 if 语句的条件 skill == ‘Python’,程序将来到代码块 ① 内。

# 代码块 ①
if score > 90:
print('Python 可以写进简历')
else:
print('Python 暂不可以写入简历')

进入代码块 ① 内,我们可以看到是一个 if 语句,此时它的条件是用 score 与 90 做比较。

而我们上方对 score 赋的值为 60,不符合 if 语句的条件,所以程序执行 else 语句下的打印语句,最终打印出"Python 暂不可以写入简历"。

现在可以理解条件判断嵌套的执行流程了嘛?其实不难,只要我们先把代码块的内容看做一个整体,先从外层下手,再一步步往内层走就行了。

再给一道选择题给你,看看条件判断嵌套的执行流程你是否掌握了:

name = input('学生的名字是?')
skill = input('他/她拥有的技能是:')
if name == '月娜':
print('月娜是老师哦')
elif name == '知枫':
if skill == '吉他':
print('弹吉他的技能可以写进简历')
else:
print('暂不能写进简历')

以上程序输入"知枫","吉他"后,得到的结果是?

A.Python 暂不可以写入简历

B.弹吉他的技能可以写进简历

C.月娜是老师哦

D.终端无显示

解析:首先 name 的值符合外层 elif 语句的条件,进入 elif 语句的代码块,skill 的值符合代码块中 if 语句的条件,最终打印出"弹吉他的技能可以写进简历"。

正确答案:B

现在,相信你现在可以理得清,我们条件判断嵌套是怎么执行了吧!

我再给你讲讲写条件判断嵌套的思路,然后你来独立写出这一个条件判断嵌套的代码吧!

3.2 条件判断嵌套的写法

条件判断嵌套该怎么写呢?我们还是拿上面的案例来分析,跟执行流程一样,我们依旧先把代码概括成下面的形式。

skill = input('知枫现有的技能:')
score = int(input('该技能的分数为?'))
if skill == 'Python':
(代码块 ①)
elif skill == '吉他':
(代码块 ②)

条件判断嵌套的写法先从外层的条件判断语句下手,代码块可以先只写简单的打印语句。

比如我们先预设外层 if 语句的条件符合时,打印"不可以写进简历";elif 语句的条件符合时,打印"可以写进简历"。那么代码是这样的:

skill = input('知枫现有的技能:')
if skill == 'Python':
print('不可以写进简历')
elif skill == '吉他':
print('可以写进简历')

这时我们再将代码块的逻辑修改成我们想要的逻辑,如 Python 写进简历,需要分数达到 90 分以上,否则不能写进简历。

那么我们可以将 skill == ‘Python’ 条件下的打印语句替换为条件判断语句。

skill = input('知枫现有的技能:')
score = int(input('该技能的分数为?'))
if skill == 'Python':
if score > 90:
print('Python 可以写进简历')
else:
print('Python 暂不可以写入简历')
elif skill == '吉他':
print('可以写进简历')

同样的,吉他的技能需要达到 50 分以上才能写进简历。那么再将 skill == ‘吉他’ 条件下的打印语句替换为条件判断语句,就可以达到我们的最终代码啦。

skill = input('知枫现有的技能:')
score = int(input('该技能的分数为?'))
if skill == 'Python':
if score > 90:
print('Python 可以写进简历')
else:
print('Python 暂不可以写入简历')

其实无论是条件判断嵌套的执行流程还是写法,只要把程序先概括一下,再从外层往内层一步步走就不难了。

4. 总结

今天的新知识讲解就到这里啦,我们一起来总结今天学到的知识吧。

本节主要学习了以下几个知识点:

1)布尔类型:用来表示条件是否成立,有两个值 True 和 False;

2)比较运算符:用来判断条件是否成立。比较运算符有 “==”、“!=”、“>”、“<”、“>=“和”<=”;

3)逻辑运算符:可以用于表达式的布尔值比较。逻辑运算符有 “and”、“or” 和 “not”;

4)条件判断语句:根据不同条件的结果,执行不同的代码块。条件判断语句有 if、elif 和 else 语句;

5)条件判断嵌套:在外层条件满足的前提下,再增加额外的判断。

其中条件判断语句的重难点有:

条件判断嵌套的重难点:

1)条件判断嵌套中,相对于外层条件判断语句有同样缩进的所有代码,我们称之为一个代码块,代码块里可以包含多条语句。

2)无论是条件判断嵌套的执行流程还是写法,我们只需把内层(代码块)看做一个整体,从外层出发往内层一步步执行即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值