复合语句中包含的语句种类没有限制_3.2 条件语句

本文将探索:

v2-57f7dec55e617ce922e57d847b85b3e5_b.jpg

【探索内容】

到此之前,我们所写的程序,语句都是逐条执行的。条件语句,可以使得程序选择是否执行特定的语句块。

所谓的选择执行在我们生活中很常见:如果明天疫情结束,我们就去外面吃火锅庆祝(当然也可说:如果明天疫情结束,我们就去外面吃火锅庆祝;否则,我们就在家学习。)如果你点赞,作者就会很开心。等等。我们需要判断假设条件是真或假(即假设条件是否发生),明天疫情结束吗?你会给作者点赞吗?

而在计算机中,通过布尔值表明True(真)或False(假)。

1.布尔值

布尔值也称真值,是以在真值方面做出了巨大贡献的George Boole命名的。用作布尔表达式(如用作if语句中的条件)时,下面的值都将被解释器视为假:

False None 0 "" () [] {}

标准值False和None、各种类型(包括浮点数、复数等)的数值0、空序列(如空字符串、空元组和空列表)以及空映射(如空字典)都被视为假,而其他各种值都被视为真(包括特殊值True)。

虽然可供选择的真值非常多,但标准真值为True和False,实际上, True和False不过是0和1的别名

v2-8b3b664456608d9840f987e98885498d_b.jpg

布尔值True和False属于类型bool,而bool与list、 str和tuple一样,可用来转换其他的值。

v2-9cb0c842674a4ecf87aa5cf9e6f8be17_b.jpg

2. if 语句

v2-d727027f3ee9eda10e2a79d757667866_b.jpg

这就是if语句,能够有条件地执行代码。这意味着如果条件( if和冒号之间的表达式)为前面定义的真,就执行后续代码块(这里是一条print语句);如果条件为假,就不执行。

你或许注意到了,栗子第3行代码前面有一些空格,实际上,python通过缩进代码(即在前面加4个空格或者直接按下Tab键,注意二者不要混用)来创建代码块。代码块是一组语句,可在满足条件时执行( if语句),可执行多次(循环),等等。

3. else子句

如果你愿意,可使用else子句增加一种选择(之所以叫子句是因为else不是独立的语句,而是if语句的一部分)。

v2-892cbecf9b54fdf1d0603e39d33ca797_b.jpg

当输入86后,计算机判断if语句中grade >= 90不成立将跳过下一行(即栗子中第3行)缩进的代码块,来到第4行else子句,而后进入else子句内部,继续运行第5行内容。即没有执行第一个代码块(因为条件为假),将进入第二个代码块。

4. elif 子句

有时候,要检查多个条件,可使用elif。 elif是else if的缩写,由一个if子句和一个else子句组合而成,也就是包含条件的else子句。

v2-65deb55a7a0cd3cf00b38085270b3f64_b.jpg

注:if语句,当其中的一个条件满足,执行相应代码块后,直接跳出if语句。如栗子中,程序从第1行开始运行,而后第2行,发现条件不成立,跳过第三行代码块,来到第4行,条件成立,执行第5行,而后不再执行第6~11行内容。

5.更复杂的条件

来瞅瞅条件执行中最有趣的部分——条件本身。

5.1比较运算符

在python中有8种比较运算符,还有两种具有相同语法优先级的运算innot in,它们被iterable或实现了__contains__()方法的类型所支持。

v2-490829dca7baf22f30fe57f06ec92ff5_b.jpg

特别注意,x==y 和x is y的区别;x == y 意味着变量x及变量y指向的内存中,存储的数据相等;而x is y 意味着变量x及变量y指向同一个内存地址。特别注意:不要将is用于数和字符串等不可变的数据类型。鉴于Python在内部处理这些对象的方式,这样做的结果是不可预测的。

v2-4fecdc78eeb3f23d28db120e8d71fcef_b.jpg

5.2 布尔运算符(逻辑运算符) --- and, or, not

这些属于布尔运算,按优先级升序排列:

v2-564505ed7a3297ac6d4b0a1332fcc0f5_b.jpg

注释:

  1. 这是个短路运算符,因此只有在第一个参数为假值时才会对第二个参数求值。
  2. 这是个短路运算符,因此只有在第一个参数为真值时才会对第二个参数求值。
  3. not 的优先级比非布尔运算符低,因此 not a == b 会被解读为 not (a == b)a == not b 会引发语法错误。

即布尔运算符有趣的特征:只做必要的计算。例如,仅当x和y都为真时,表达式x and y才为真。因此如果x为假,这个表达式将立即返回假,而不关心y。

【题外话】

1.本节对于小白极易出错地方,冒号漏写,或错写为分号或中文状态下冒号,或者不该出现冒号的地方强行添加冒号;

2.注意缩进格式时,不要tab键和空格键混合用。养成一个好习惯会受益无穷,而坏习惯有时候虽然也能运行出正确结果,但是为未来埋下了bug的种子,后患无穷。

【挑战】

1.思考栗子中问题出在哪里?

v2-5eac598f20d827bc04abe9d45332464a_b.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值