夜光带你走进python开发 (二十六)**语言

夜光序言:

人生要耐得住寂寞。世间总是有太多的繁华,撩拨我们本就不平和的心境。

夜光带你走进python开发 (二十六)**语言

 

正文:布尔表达式


 条件语句和循环语句都使用布尔表达式作为条件
 布尔值为真或假,以False和True表示
 前面经常使用布尔表达式比较两个值,如:while 

x>=0


布尔操作符的引入


 简单条件在复杂决策情况下存在一定缺陷
 例如,确定两个点是否是在同一个位置,即是否有相同的x坐标和y坐标,下面是处理的代码片段:过于复杂,Python提供了更简单的布尔操作符来构建表达式

夜光带你走进python开发 (二十六)**语言


布尔操作符


 布尔操作符: and,or和 not
 布尔运算符and和or用于组合两个布尔表达式,并产生
一个布尔结果
 <expr> and <expr>
 <expr> or <expr>
 not运算符是一个一元运算符,用来计算一个布尔表达式的反
 not <expr>


布尔操作结果-真值表

夜光带你走进python开发 (二十六)**语言

夜光带你走进python开发 (二十六)**语言

夜光带你走进python开发 (二十六)**语言

布尔操作符


 使用布尔运算符,可以建立任意复杂的布尔表达式
 例如:

夜光带你走进python开发 (二十六)**语言
 Python中布尔操作符的优先级,从高分到低分依次是not、and最低是or。所以上面的达式等于如下这个带括号的版本:

夜光带你走进python开发 (二十六)**语言

布尔操作符


 使用and操作符改进之前比较两个点相同的例子

夜光带你走进python开发 (二十六)**语言

壁球比赛计分例子


 假设scoreA和scoreB代表两个壁球选手的分数


 规则:只要一个选手达到了15分,本场比赛就结束。
 即如下布尔表达式为真时比赛结束:

夜光带你走进python开发 (二十六)**语言
 可以构造循环条件,对游戏结束条件取反:

夜光带你走进python开发 (二十六)**语言


布尔代数


 布尔表达式遵循特定的代数定律,这些规律被称为布尔逻辑或布尔代数


 布尔代数规则

夜光带你走进python开发 (二十六)**语言

当0和1对应false和true时


 and与乘法相似
 or与加法相似


任何值和true进行“or”操作都是真

夜光带你走进python开发 (二十六)**语言
 and和or 操作符都符合分配率:

夜光带你走进python开发 (二十六)**语言
 not操作符具有负负抵消的特性:.

夜光带你走进python开发 (二十六)**语言
 布尔代数符合德摩根定律, not放进表达式后,and和or运算符之间发生的变化:

夜光带你走进python开发 (二十六)**语言


 布尔代数的应用

夜光带你走进python开发 (二十六)**语言
 通过使用布尔代数,可以转换上面这个表达式。应用德摩根定律,其等同于下面这个表达式:

夜光带你走进python开发 (二十六)**语言
 注意,当使用not的分配率时,or和and的转变。

夜光带你走进python开发 (二十六)**语言

 在Python中,布尔表达式是很灵活的。
 回顾交互式循环,只要用户响应一个“Y”程序就继续。为了让用户输入一个大写或小写,可以使用以下的循环:

夜光带你走进python开发 (二十六)**语言
 嘿哈~~注意不要将上述表达式写成以下的形式
 夜光:其实这是一个无限循环。请思考为什么这里的条件表达式的值总为真?

夜光带你走进python开发 (二十六)**语言

Python的条件运算符(即==)总是在与一个bool类型的值进行比较~


 布尔True和False来代表布尔值的真和假
 对于数字(整型和浮点型)的零值被认为是false
 任何非零值都是true
 bool类型仅仅是一个特殊的整数,可以通过计算表达式True + True的值来测试一下


 对于序列类型来说,一个空序列被解释为假,而任何非空序列被指示为真

夜光带你走进python开发 (二十六)**语言

 Python的布尔灵活性也扩展到了布尔运算符。下表总结了这些运算符的特性:

夜光带你走进python开发 (二十六)**语言
 Python的布尔运算符是短路运算符。


 Python从左到右扫描表达式一旦知道结果,就立即返回True或False值。


 

 如果用户仅仅简单敲下回车键,可以使用方括号中的值作为默认值

夜光带你走进python开发 (二十六)**语言
 可以简化如下:

夜光带你走进python开发 (二十六)**语言

 更简洁的表达形式

夜光带你走进python开发 (二十六)**语言
 or操作符的定义保证它等价于if-else结构,
 进一步简化:

夜光带你走进python开发 (二十六)**语言