每日分享
1.物来顺应
2.未来不迎
3.当事不杂
4.季过不恋
今天暂时不分享英文名言,因为昨天晚上看到4句话,特别想分享给大家。第一句『物来顺应』告诫我们事情已经发生了,就要顺应去面对;第二句『未来不迎』劝告我们不要为没有发生的事情而焦虑;第三句『当事不杂』告诉我们专注于做好当前的事情;第四句『季过不恋』指明已经过去的事情,无论是好是坏,都不必去留恋。
来源于曾国藩的语句解读
前言
昨天好朋友『小鱼干』告诉我这一系列的文章最好加上数字标明,好让读者了解学习顺序。这一点确实是我的疏忽,知错就改,善莫大焉。同时感谢『小鱼干』的付出 ~
昨天的文章『每天 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,整个表达式结果才为 True if (1 == 1) and (10 > 3): print("条件成立!") # 输出结果 条件成立!
or
此逻辑运算符代表的是 或
。表示符号左右两个条件,只要有一个条件满足,整体判断条件就成立,返回 True
。结合生活中的例子也可以理解,比如招聘上写着掌握以下任意一种工具使用即可,列举了很多,但是它们是 或
的关系,也就是你只要会一个,那么就可以应聘。
结合代码再次举例:
# or : 左右表达式有一个为True,整个表达式结果就为 True if (1 == 2) or (10 > 3): print("条件成立!") # 输出结果 条件成立!
not
这个更加好理解,相当于英语中的否定前缀。一个条件不成立,如果前面加一个 not
可以将其转化为条件成立,即取反。
# not:将右边表达式的逻辑结果取反,Ture变为False,False变为True if not (1 == 2): print("条件成立!") # 输出结果 条件成立!
1.5 if-else
先翻译一下单词, if
代表如果;else
代表其他。当条件成立的时候执行内容1,那么条件不成立如何执行内容2呢?那便是使用 if-else
。先看一下格式:
if 判断条件: 条件成立时执行内容 else: 条件不成立时执行内容
再次强调,一定要注意缩进问题。之前在给学生批改作业时,经常发现缩进导致的错误,这样的问题应该避免。
举个例子:
age = 16 if age >= 18: print("恭喜你,可以上网!") else: print("小屁孩,回去写作业~")
执行结果为:
小屁孩,回去写作业~
细心的同学应该已经发现,结果怎么同上面出现过的一个示例代码相同,再回顾一下:
age = 16 if age >= 18: print("恭喜你,可以上网!") print("小屁孩,回去写作业~")
没错,它们的结果是一样的。结合之前说的代码块,大家会发现使用 if-else
后,代码更整齐,直观,逻辑性更强。大家结合实际情况选择使用即可。
1.6 elif
截止目前,已经可以实现,选择输出两块内容了。现在有一种情况:如果分数在 60 到 80 之间表示为好,分数在 80 到 90 之间表示为良,90 到 100 之间则表示为优。该怎么办?答案便是使用 elif
。
同样先看一下格式:
if xxx1: 事情1 elif xxx2: 事情2 elif 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 中的某一个。其余的知识前面都有讲解到,大家可以自己写一下,也可以先理解参考代码。