夜光带你走进python开发 (二十六)**语言
夜光序言:
人生要耐得住寂寞。世间总是有太多的繁华,撩拨我们本就不平和的心境。
正文:布尔表达式
条件语句和循环语句都使用布尔表达式作为条件
布尔值为真或假,以False和True表示
前面经常使用布尔表达式比较两个值,如:while
x>=0
布尔操作符的引入
简单条件在复杂决策情况下存在一定缺陷
例如,确定两个点是否是在同一个位置,即是否有相同的x坐标和y坐标,下面是处理的代码片段:过于复杂,Python提供了更简单的布尔操作符来构建表达式
布尔操作符
布尔操作符: and,or和 not
布尔运算符and和or用于组合两个布尔表达式,并产生
一个布尔结果
<expr> and <expr>
<expr> or <expr>
not运算符是一个一元运算符,用来计算一个布尔表达式的反
not <expr>
布尔操作结果-真值表
布尔操作符
使用布尔运算符,可以建立任意复杂的布尔表达式
例如:
Python中布尔操作符的优先级,从高分到低分依次是not、and最低是or。所以上面的达式等于如下这个带括号的版本:
布尔操作符
使用and操作符改进之前比较两个点相同的例子
壁球比赛计分例子
假设scoreA和scoreB代表两个壁球选手的分数
规则:只要一个选手达到了15分,本场比赛就结束。
即如下布尔表达式为真时比赛结束:
可以构造循环条件,对游戏结束条件取反:
布尔代数
布尔表达式遵循特定的代数定律,这些规律被称为布尔逻辑或布尔代数
布尔代数规则
当0和1对应false和true时
and与乘法相似
or与加法相似
任何值和true进行“or”操作都是真
and和or 操作符都符合分配率:
not操作符具有负负抵消的特性:.
布尔代数符合德摩根定律, not放进表达式后,and和or运算符之间发生的变化:
布尔代数的应用
通过使用布尔代数,可以转换上面这个表达式。应用德摩根定律,其等同于下面这个表达式:
注意,当使用not的分配率时,or和and的转变。
在Python中,布尔表达式是很灵活的。
回顾交互式循环,只要用户响应一个“Y”程序就继续。为了让用户输入一个大写或小写,可以使用以下的循环:
嘿哈~~注意不要将上述表达式写成以下的形式
夜光:其实这是一个无限循环。请思考为什么这里的条件表达式的值总为真?
Python的条件运算符(即==)总是在与一个bool类型的值进行比较~
布尔True和False来代表布尔值的真和假
对于数字(整型和浮点型)的零值被认为是false
任何非零值都是true
bool类型仅仅是一个特殊的整数,可以通过计算表达式True + True的值来测试一下
对于序列类型来说,一个空序列被解释为假,而任何非空序列被指示为真
Python的布尔灵活性也扩展到了布尔运算符。下表总结了这些运算符的特性:
Python的布尔运算符是短路运算符。
Python从左到右扫描表达式一旦知道结果,就立即返回True或False值。
如果用户仅仅简单敲下回车键,可以使用方括号中的值作为默认值
可以简化如下:
更简洁的表达形式
or操作符的定义保证它等价于if-else结构,
进一步简化: