本文目录一览:
python中and、or和not 三个逻辑运算符,一直理解不了,求帮助!
‘and’、‘or’和‘not’的优先级是notandor
首先,‘and’、‘or’和‘not’的优先级是notandor。
and :x and y 返回的结果是决定表达式结果的值。如果 x 为真,则 y 决定结果,返回 y ;如果 x 为假,x 决定了结果为假,返回 x。
or :x or y 跟 and 一样都是返回决定表达式结果的值。
not : 返回表达式结果的“相反的值”。如果表达式结果为真,则返回false;如果表达式结果为假,则返回true。
其次,逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。
例如,如果A 和C 为真而B 为假, A and B and C 不会解析C,作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。因此,逻辑运算符的理解也与C语言中不同。举个例子:
在以上例子中,按照C语言对的思维,3 and 4即3与4为3,但是由于是短路操作符,结果为4,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量,即为4;改变一下顺序4 and 3 ,结果也不一样,即为3.
而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量,即 3 or 4,值为3;改变顺序4 or 3 即为4.
Python教程:第19篇 逻辑运算符
我们在高一时学习过命题的逻辑运算:与、或、非,在计算机科学中,其运算规则也是类似的(基本原理相同,但操作数与返回结果有所不同),Python也不例外。
在Python中,与用and、或用or、非用not表示。逻辑运算符一般用于操作返回值为bool类型的表达式,以表达式的值True(真)和False(假)为例。其运算规则总览如下:
需要特别注意的是,在Python中,虽然逻辑运算符的操作数一般是运算结果为逻辑值的表达式,但也可以是运算结果为数值、字符串、元组、列表、集合、字典等类型的表达式。返回值也不一定是逻辑(bool)类型。而有些教程错误地称只能操作bool类型的表达式以及始终返回bool类型。
我们可以用两个not查看某种数据等价的逻辑值,下面是一些常见数据类型的等价规则:
一、数值除了0视为False,其余数值(包括小数、负数、复数)均视为True:
二、字符串除了空字符串视为False外,其余均视为True(包括空格、制表、换行、回车等空白符,也包括字符串'False'):
三、对于元组、列表、集合、字典也是如此,空的视为False,非空的均视为True,即使其中只有一个值为False或0的数据:
有一种情况容易产生误解,就是使用小括号将False包围起来,这其实也是表示bool值,而不是元组,元组是使用小括号包围的数据列表,但是如果只有一个成员,数据后面要加一个逗号,正如上述示例中所示那样,下面的示例显示了小括号包围的False的数据类型:
四、对于一个类也是如此,非空类视为True(注:无法创建什么都不包含的空类):
五、None视为False:
总结一下就是: 数值0、空字符串、空元组、空列表、空集合、空字典以及None,均视为逻辑值False,其余均视为True。
需要注意的是,逻辑运算符的返回值不一定是bool类型。
了解了非bool类型的操作数等价的逻辑值之后,还需要了解逻辑运算符的完全运算规则,才能得知具体会返回什么值。
and为逻辑与(也称逻辑且),其使用语法如下:
表达式A and 表达式B
其中操作数表达式A和表达式B一般均为逻辑值。但也可以是数值、字符串、元组、列表、集合、字典、对象等类型。
其运算通用规则为: 如果 表达式A 的运算结果等价于False,返回其运算结果,不再计算表达式B。否则返回 表达式B 的运算结果。
对于最常用的两个操作数均为逻辑值的情况,只有当两个操作数均为True的情况下为True,其余情况均为False,以下是所有四种可能情况的运行示例:
其中两个操作数也都可以是非逻辑值。
当第1个操作数结果等价于False时,比如False、0、None、空字符串、空元组、空列表、空集合、空字典等,整个逻辑表达式返回第1个操作数,注意,返回的是操作数的原始值,而不是等价值False,下面是运行示例(None表示什么也没有,所以没有输出。set()返回空集合):
当第1个操作数等价于True时(非数值0、非空字符串等都等价于True),则不管第2个表达式的返回值是什么,都将返回第2个值,当然这时第2个表达式不能有语法错误:
or为逻辑或,其使用格式如下:
表达式A or 表达式B
其中操作数表达式A和表达式B与and中的操作数含义相同。
其运算通用规则为: 如果 表达式A 的运算结果等价于True,返回其运算结果,不再计算表达式B。否则返回 表达式B 的运算结果。 其与and的区别在于,or当表达式A为True则返回表达式A,and当其为False时返回表达式A。
以上面and的示例为模板,可以看到,or与and的返回值正好相反。
与and类似,当表达式A相当于True时,表达式B也不会计算:
下面是常见的两个操作数均为逻辑值的情况,or运算符的四种可能情况的运行示例(除非两个值都是False时返回False,其余情况返回True):
not为逻辑非,其使用格式如下:
not 表达式
其运算规则为: 当 表达式 的运算结果为False、0、None、空字符串、空元组、空列表、空集合、空字典时,返回True。其余情况均返回False。
下面是一些不同数据类型的运算示例:
与and和or不同的是,not的返回值始终是bool类型,即只有True和False两种可能的取值。
所以,可以使用not not 表达式来查看一个非逻辑值是等价True还是False,正如上文非逻辑操作数等价的逻辑值中所示的那样。
当然,not最常用的用法还是逆转逻辑值,下面是两种可能情况的运行示例:
逻辑运算符优先级notandor。
下面的示例证明and先于or运算:
下面的示例证明not先于or运算:
下面的示例证明not先于and运算:
另外,所有的逻辑运算符都比元组逗号分隔符的优先级要高,以and为例,比如下面是一个元组:
下面的例子中:
先计算了3 and 4,然后再组合成了元组,相当于:
而不是:
not与or的优先级也比其要高,下面是示例:
所以虽然元组有时可以省略小括号,但在与逻辑运算符运算时,元组请始终使用小括号。
这篇文章的整理与编写花费了我近十小时时间,从上午写到晚上。是我目前最具匠心的文章,如果说以前我的文章只适合初学者,偶尔超水平发挥才适合中级学者,那么这篇文章我感觉对高水平人员也有重要的参考意义。
就我目前所知,我所写的教程,在全网找不到第二个比它更优秀的了,当然,每个人心中都有一杆称,不同读者可能也有不同的际遇,我能做的只是做好自己。
所以,如果你觉得此文不错,可以分享给你身边的朋友、同学、同事、同乡,世界很大也很小,很多东西,初见只能依靠缘分。而再见就需要你的主动了,缘分天注定,努力亦可改变命运。
Python教程:第11篇 变量赋值
Python教程:第17篇 比较运算符
Python教程:第18篇 算术运算符
Python语法小记忆
Python 中的字符串还支持转义字符。所谓转义字符是指使用反斜杠“\”对一些特殊字符进行转义。
转义字符说明
\ 续行符
\n 换行符
\0 空
\t 水平制表符,用于横向跳到下一制表位
\'' 双引号
\' 单引号
\\ 一个反斜杠
\f 换页
\0dd 八进制数,dd 代表字符,如\012 代表换行
\xhh 十六进制数,hh 代表字符,如\x0a 代表换行
在Python 中,提供了如下表所示的函数进行数据类型的转换。
函数作用
int(x) 将x 转换成整数类型
float(x) 将x 转换成浮点数类型
complex(real [,imag]) 创建一个复数
str(x) 将x 转换为字符串
repr(x) 将x 转换为表达式字符串
eval(str) 计算在字符串中的有效Python 表达式,并返回一个对象
chr(x) 将整数x 转换为一个字符
ord(x) 将一个字符x 转换为它对应的整数值
hex(x) 将一个整数x 转换为一个十六进制字符串
oct(x) 将一个整数x 转换为一个八进制的字符串
赋值运算符主要用来为变量等赋值。使用时,可以直接把基本赋值运算符“=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给左边的变量。在Python 中常用的赋值。
运算符如下表所示。
运算符说明举例展开形式
= 简单的赋值运算x=y x=y
+= 加赋值x+=y x=x+y
-= 减赋值x-=y x=x-y
*= 乘赋值x*=y x=x*y
/= 除赋值x/=y x=x/y
%= 取余数赋值x%=y x=x%y
**= 幂赋值x**=y x=x**y
//= 取整除赋值x//=y x=x//y
比较运算符,也称关系运算符,用于对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回True,如果为假,则返回False。比较运算符通常用在条件语句中作为判断的依据。Python 中的比较运算符如下表所示。
运算符作用举例结果
大于'a' 'b' False
小于156 456 True
== 等于'c' == 'c' True
!= 不等于'y' != 't' True
= 大于或等于479 = 426 True
= 小于或等于62.45 = 45.5 False
逻辑运算符是对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值,Python中的逻辑运算符主要包括and(逻辑与)、or(逻辑或)、not(逻辑非)。
运算符含义用法结合方向
and 逻辑与op1 and op2 从左到右
or 逻辑或op1 or op2 从左到右
not 逻辑非not op 从右到左
所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的“先乘除,后加减”是一个道理。
下表按从高到低的顺序列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
运算符说明
** 幂
~、+、- 取反、正号和负号
*、/、%、// 算术运算符
+、- 算术运算符
、 位运算符中的左移和右移
位运算符中的位与
^ 位运算符中的位异或
| 位运算符中的位或
、=、、=、!=、== 比较运算符
在Python 中,使用内置函数input()可以接收用户的键盘输入。input()函数的基本用法如下:
variable = input("提示文字")
其中,variable 为保存输入结果的变量,双引号内的文字用于提示要输入的内容。
默认的情况下,在Python中,使用内置的print()函数可以将结果输出到IDLE或者标准控制台上。其基本语法格式如下:
Print(输出内容)
其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接
输出,也可以是包含运算符的表达式,此类内容将计算结果输出。