python中and、or和not 三个逻辑运算符,一直理解不了,求帮助!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中and、or和not 三个逻辑运算符,一直理解不了,求帮助!相关的知识,希望对你有一定的参考价值。

‘and’、‘or’和‘not’的优先级是not>and>or

首先,‘and’、‘or’和‘not’的优先级是not>and>or。

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.

参考技术A 简单解释就是:
and -> A and B -> 表示A和B都必须同时满足才可以
or -> A or B -> 表示A或B,两者满足一个,其中任意一个,就可以了
not A -> 对于A取反 -> A原来是真,则现在是假;A原来是假,则现在是真。

这些,其实和Python关系不大,和你对于基本的,编程语言中的逻辑,不理解有关系。
很多语言,都是这个逻辑的。也本身是符合人类的逻辑的。

感兴趣的,自己去看:
【教程】Python开发入门详解

(此处不给贴地址,请用google搜标题,即可找到地址的)本回答被提问者采纳
参考技术B 0 and 1 结果为0;3 and 4结果为4;其实本质都是两者都为1时结果才为1,python中除0之外所有正整数在逻辑运算符的时候都可以理解为1,and需要确定两者是否均为1时才输出结果,否则则输出0,3 and 4中,到4的时候确定了两者均为1,所以输出了结果4。or则是出现1结果则为1,0 or 1为1,1 or 0也为1,3 or 4为3,因为3可以理解为1,已经确定了则输出结果3。not 1为false,not 0为true,not 3为false。这样能够理解了吧。希望能够帮到被这个问题困惑的人。 参考技术C 77、 表达式 3 or 5 的值为__(3) 真或真返回第一个真,真或真返真
78、 表达式 0 or 5 的值为___(5) 假或真返真
79、 表达式 3 and 5 的值为__。(5) 真且真返真,返回第二个真。
#and, or:
# 判断变量是否为0, 是0则为False,非0判断为True,

# and中含0,返回0; 均为非0时,返回后一个值,两个1返回第二个1(两个真返回第二个真),其余返回第一个非0
a=(2 and 0) # 返回0
b=(2 and 1) # 返回1
c=(1 and 2) # 返回2
#1且1返1,1且0返0,0且1返1
print(a)
print(b)
print(c)

# or中, 至少有一个非0时,返回第一个非0,
d=(2 or 0) # 返回2
c=(2 or 1) # 返回2
e=(0 or 1) # 返回1
f=(0 or 0) # 返回0,重点记住,or只有 0 or 0 才返回0,两个0返回第二个0(两个假返回第二假),其余返回第一个非0
#1或1返1,1或0返1,0或1返1
print(d)
print(c)
print(e)
print(f)
Python 中,
or 可以理解为找真值演算,从左到右发现真值就返回真值;
如果两个都是假值,那就返回最后一个假值。

and 可以理解为找假值演算,从左到右发现假值就返回假值;
如果两个都是真值,那就返回最后一个真值。

演算规则简单归纳一下就是:

or :找真值:
如果有一个值为真,or 立刻返回第一个真值;
如果所有值都为假,or 返回最后一个假值。

and :找假值:
如果有一个值为假,and 立刻返回第一个假值;
如果所有值都为真,and 返回最后一个真值。
(or或假,假装疑惑,A和B同时是假时才是假。and且行且珍惜,A且B为真时才是真。)(or或假,两个为假时,返回最后一个假值。and且行且珍惜,两个为真时,返回最后一个真值。都是返回最后一个)(假或假才是假,真且真才是真)
(0代表假False,其他数字代表真True)

01 Python 逻辑去运算

#and or not

#优先级 ()>not>and>or

#and or not
print(2>1 and 1<4 or 2<3 and 9>6 or 2<4 and 3<2)
#         True     or    True    or     False
#True
print(3>4 or 4<3 and 1==1)                               #False
print(1<2 and 3<4 or 1>2)                                #True
print(2>1 and 3<4 or 4>5 and 2<1)                        #True
print(1>2 and 3<4 or 4>5 and 2>1 or 9<8)                 #False
print(1>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6)         #False
print(not 2>1 and 3<4 or 4>5 and 2>1 and 9>8 or 7<6)     #False

数字与布尔值转换

#int-->bool
print(bool(2))   #True
print(bool(-2))  #True
print(bool(0))   #False
#bool-->int
print(int(True))   #1
print(int(False))  #0

x or y,若 x 为非0,则返回 x

print(1 or 2)    #1
print(3 or 2)    #3
print(0 or 2)    #2
print(0 or 100)  #100

x and y,若 x 为真,则返回 y

print(1 and 2)   #2
print(0 and 2)   #0

 #and or 组合

print(2 or 100 or 3 or 4)  #2
print(0 or 4 and 3 or 2)   #3

#综合 第一个为布尔型则返回布尔型,第一个为数值型,则返回数值型

print(1>2 and 3 or 4 and 3<2) #False
print(2 or 1<3 and 2)         #2

 

print(0 or 5<4)               #False
print(0 and 3>1)              #0
print(3>1 and 0)              #0
print(3>1 and 2 or 2<3 and 3 and 4 or 3>2)  #2

 

以上是关于python中and、or和not 三个逻辑运算符,一直理解不了,求帮助!的主要内容,如果未能解决你的问题,请参考以下文章

python-逻辑运算:not\and\or和布尔值:True\False

Python逻辑运算符and?

除了 AND/OR/NOT,其他逻辑运算符在编程中的意义何在?

Python not and or

and_or_not 逻辑运算符的操作注解!

python邂逅——符号运算