正文共:4598 字 6 图

预计阅读时间:12分钟

每天 3 分钟,小闫带你学 Python(七)_python

每日分享

1.物来顺应

2.未来不迎

3.当事不杂

4.季过不恋

今天暂时不分享英文名言,因为昨天晚上看到4句话,特别想分享给大家。第一句『物来顺应』告诫我们事情已经发生了,就要顺应去面对;第二句『未来不迎』劝告我们不要为没有发生的事情而焦虑;第三句『当事不杂』告诉我们专注于做好当前的事情;第四句『季过不恋』指明已经过去的事情,无论是好是坏,都不必去留恋。

来源于曾国藩的语句解读


每天 3 分钟,小闫带你学 Python(七)_缩进_02

前言


每天 3 分钟,小闫带你学 Python(七)_缩进_03

昨天好朋友『小鱼干』告诉我这一系列的文章最好加上数字标明,好让读者了解学习顺序。这一点确实是我的疏忽,知错就改,善莫大焉。同时感谢『小鱼干』的付出 ~

昨天的文章『​​每天 3 分钟,小闫带你学 Python​​』讲解了输入、运算符号以及数据类型的转换。今天开始进入有难度的一节,那便是判断语句。开始咯 ~

1.判断语句

1.1 场景带入

大家肯定都去过一个地方,那便是网吧。网吧有一个规定,大家应该熟悉,未成年人不得入内。怎么判断呢?可以查验你的身份证,如果小于18岁,那么不可以让你上网。

另一个场景,在超市内,只有你付过款,才可以将物品带出超市。判断便是:如果你支付了该物品的钱,那么你可以将物品带出超市。

还有超多的例子,​像这样『如果 ... 那么 ...』的句子我们称之为判断语句​。即当条件满足时执行,不满足则禁止执行。在编程的世界里,其实也充满了这样的场景。

1.2 if 语句

我们早就知道 Python 语言简单易读,那么如何体现呢?容我慢慢道来。​如果​ 的英文是什么?张口就来 ​if​义夫 ~Python 里面还真是利用 ​if​ 进行判断的。先看一下一般格式:

if 判断的条件:
条件成立后要执行的内容

拿一开始进网吧的场景来举例:

age = 21
if age >= 18:
print("恭喜你,可以上网!")

我们可以看到输出结果为:

恭喜你,可以上网!

再以超市的场景举例:

flag 代表标记,1表示付过款,0表示没有付过款。编程中经常使用这样的标记来表述是或则否。

flag = 1
if flag == 1:
print("购物愉快,欢迎下次光临")

输出为:

购物愉快,欢迎下次光临

再看一种情况:条件不满足

age = 16
if age >= 18:
print("恭喜你,可以上网!")
print("小屁孩,回去写作业~")

输出结果为:

小屁孩,回去写作业~

因为 age 为16,不满足判断条件,所以 if 代码块里面的内容没有执行,而是向下顺序执行。

此处说明一下,Python 的程序在启动后,会​自上向下​按顺序执行。Python 中是严格缩进的,即该缩进的地方必须缩进,既美观又逻辑清晰。那么什么时候该缩进呢?如何缩进呢?一个完整的处理部分,比如上面的 if 判断语句(判断条件和满足后执行内容是一个整体)组成一个代码块,整体和下面的 ​print("小屁孩,回去写作业~")​等级一致,可以看做执行完判断语句后执行该输出语句。如果还是不理解,可以类比Word 文档中一级标题和二级标题的区别。如果 ​print("恭喜你,可以上网!")​不缩进,那么它与下一个输出 ​print("小屁孩,回去写作业~")​ 等级一致。会按顺序都输出,相当于都变成了一级标题。为了让其表示在代码块内部,就用到了缩进,缩进是 4 个空格,或者键盘上的 1 个 ​tab​ 键。

1.3 比较运算符

大家看上面的程序时,也许会有疑问:​>=​ 可以理解为 ​大于等于​,但是等于为什么是 ​==​ 而不是 ​=​ 呢?其他的比较如何表示呢?下面为大家做了一个总结。

为了区别于赋值运算符 ​=​ ,我们将等于表示为 ​==​。


运算符

描述

示例

==

检查两个操作数的值是否相等,如果是则条件变为真。

如a=3,b=3,则(a == b) 为 True

!=

检查两个操作数的值是否相等,如果值不相等,则条件变为真。

如a=1,b=3,则(a != b) 为 True

>

检查左操作数的值是否大于右操作数的值,如果是,则条件成立。

如a=7,b=3,则(a > b) 为 True

<

检查左操作数的值是否小于右操作数的值,如果是,则条件成立。

如a=7,b=3,则(a < b) 为 False

>=

检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。

如a=3,b=3,则(a >= b) 为 True

<=

检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。

如a=3,b=3,则(a <= b) 为 True

上述表格最右侧一列为示例,可以在表格区域左右滑动进行查看。大家可以发散思维,想象其更多的应用场景。

1.4 逻辑运算符

先将总结的内容奉上,后面我们再进行解释:


运算符

逻辑表达式

描述

实例

and

x and y

布尔"与":如果 x 为 False,x and y 返回 False,否则它返回 y 的值。

True and False, 返回 False。

or

x or y

布尔"或":如果 x 是 True,它返回 True,否则它返回 y 的值。

False or True, 返回 True。

not

not x

布尔"非":如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

not True 返回 False, not False 返回 True

在上大学时,工科会有一门电工课,这门课程中的 ​与或非门​ 电路与此处概念相通,大家可以进行类比。但是为了照顾所有人,我们假设大家都不会,下面进行详细解释。

and

此逻辑运算符代表的是 ​​,顾名思义,只有符号左右两侧的条件都满足时,才能算作判断条件成立,返回 ​True​,也就是可以执行对应的代码。结合生活中的例子,我们可以看到一些招聘上写着要求:本科以上学历,且英语过四级。是不是很眼熟,它是 ​​ 的关系,即只有两个条件都符合才可以应聘。

结合代码再举个例:

# and : 左右表达式都为True,整个表达式结果才为 Trueif (1 == 1) and (10 > 3):    print("条件成立!")# 输出结果条件成立!

or

此逻辑运算符代表的是 ​​。表示符号左右两个条件,只要有一个条件满足,整体判断条件就成立,返回 ​True​。结合生活中的例子也可以理解,比如招聘上写着掌握以下任意一种工具使用即可,列举了很多,但是它们是 ​​ 的关系,也就是你只要会一个,那么就可以应聘。

结合代码再次举例:

# or : 左右表达式有一个为True,整个表达式结果就为 Trueif (1 == 2) or (10 > 3):    print("条件成立!")# 输出结果条件成立!

not

这个更加好理解,相当于英语中的否定前缀。一个条件不成立,如果前面加一个 ​not​ 可以将其转化为条件成立,即取反。

# not:将右边表达式的逻辑结果取反,Ture变为False,False变为Trueif not (1 == 2):    print("条件成立!")# 输出结果条件成立!

1.5 if-else

先翻译一下单词, ​if​ 代表如果;​else​ 代表其他。当条件成立的时候执行内容1,那么条件不成立如何执行内容2呢?那便是使用 ​if-else​ 。先看一下格式:

if 判断条件:    条件成立时执行内容else:    条件不成立时执行内容

再次强调,一定要注意缩进问题。之前在给学生批改作业时,经常发现缩进导致的错误,这样的问题应该避免。

举个例子:

age = 16if age >= 18:    print("恭喜你,可以上网!")else:    print("小屁孩,回去写作业~")

执行结果为:

小屁孩,回去写作业~

细心的同学应该已经发现,结果怎么同上面出现过的一个示例代码相同,再回顾一下:

age = 16if age >= 18:    print("恭喜你,可以上网!")print("小屁孩,回去写作业~")

没错,它们的结果是一样的。结合之前说的代码块,大家会发现使用 ​if-else​ 后,代码更整齐,直观,逻辑性更强。大家结合实际情况选择使用即可。

1.6 elif

截止目前,已经可以实现,选择输出两块内容了。现在有一种情况:如果分数在 60 到 80 之间表示为好,分数在 80 到 90 之间表示为良,90 到 100 之间则表示为优。该怎么办?答案便是使用 ​elif​ 。

同样先看一下格式:

if xxx1:    事情1elif xxx2:    事情2elif xxx3:    事情3...else:    事情n

有了 ​elif​ 之后,我们就可以进行多条件判断了。

接下来将开始介绍的分数例子实现一下:

if score >= 60 and score < 80:    print("成绩为 好")elif score >= 80 and score < 90:    print("成绩为 良")elif score >= 90 and score <= 100:    print("成绩为 优")else:    print("成绩不合格")

注意:​elif 必须和 if 一起使用。如果有 else ,else 一定放在最后使用。

1.7 if 嵌套

不难理解,if 嵌套便是在 if 中再次使用 if 判断。比如有一种情况,本科学历以上,且英语过四级。也许你会想:

if 学历 >= 本科 and 英语 >= 四级:    print("恭喜你满足条件,可以投递简历")

上面的形式,我们称为伪代码,即不能直接运行,但是可以表示逻辑关系。以后大家会经常见到。所以如果你按照上面的代码去 PyCharm 中运行,报错就不要怪我了。

还可以表示为:

if 学历 >= 本科:    if 英语 >= 四级:        print("恭喜你满足条件,可以投递简历")


注意缩进问题。

内层的 if 和外层的 if 都可以使用 else 和 elif 。看似复杂,我们可以将其分开理解。


2.作业

今日​学习目标​:掌握判断条件的使用,达到不论场景如何都熟练应用。

1.编写一个石头剪刀布的游戏。

参考思路​:将里面的对比,抽象成判断,比如石头和剪刀比较,如果你是石头且我是剪刀,那么我输了。

参考代码:

import random



player = input('请输入:剪刀(0) 石头(1) 布(2):')

player = int(player)



# 产生随机整数:0、1、2 中的某一个

computer = random.randint(0,2)



# 用来进行测试

#print('player=%d,computer=%d',(player,computer))



if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):

print('获胜,哈哈,你太厉害了')

elif player == computer:

print('平局,要不再来一局')

else:

print('输了,不要走,洗洗手接着来,决战到天亮')

importrandom​ 是导入模块 ​random​,后面会进行讲解。此处理解为我们需要用到一个工具,这个工具在工具箱 ​random​中。我们先导入,然后就可以使用了。​random.randint(0,2)​ 代表我们使用工具箱 ​random​ 中的 ​randint()​ 这个工具(函数)。使用这个工具,我们先设置一下 ​randint(0,2)​ ,它的功能是产生随机整数:0、1、2 中的某一个。

其余的知识前面都有讲解到,大家可以自己写一下,也可以先理解参考代码。





每天 3 分钟,小闫带你学 Python(七)_python_04


每天 3 分钟,小闫带你学 Python(七)_python_05