一、运算符与表达式
1.逻辑运算符
作用:进行设置条件,运算的结果为布尔值
使用:一般结合关系运算符使用
逻辑与:and
表达式1 and 表达式2 :只有当表达式1和表达式2同时成立的时候,则结果为True
逻辑或:or
表达式1 or 表达式2 :当表达式1和表达式2中至少一个成立的时候,则结果为True
逻辑非:not
not 表达式:真---》假 假---》真
1.1逻辑与
代码演示:
"""
真 and 真 = 真
真 and 假 = 假
假 and 真 = 假
假 and 假 = 假
"""
num1 = 10
num2 = 20
#逻辑运算符结合算术运算符
if num1 - 10 and num2:
print("成立")
else:
print("不成立")
#逻辑运算符结合变量
if num1 and num2:
print("成立")
else:
print("不成立")
#思考问题:逻辑运算符结合赋值运算符使用?-----》不能
#注意:赋值运算符肯定不会出现在条件中
"""
#错误演示
if num1 += 1 and num2 -= 1:
print("成立")
"""
#逻辑运算符结合条件运算符
if num1 > num2 and num1 == num2:
print("成立")
else:
print("不成立")
1.2逻辑或
代码演示:
"""
真 or 真 = 真
真 or 假 = 真
假 or 真 = 真
假 or 假 = 假
"""
num3 = 0
num4 = 1
if num3 or num4:
print("成立")
else:
print("不成立")
if num3 > num4 or num3 == num4:
print("成立")
else:
print("不成立")
1.3逻辑非
代码演示:
"""
not 真 = 假
not 假 = 真
"""
num = 0
if not num:
print("成立")
else:
print("不成立")
1.4短路原则
面试题
出现的时机:在一个表达式中,逻辑运算符不止一个的时候,则会出现短路原则
规律:
a.表达式从左到右进行运算,如果第一个逻辑运算符为or,表达式1的值为真,则整个表达式的结果为真
举例:表达式1 or 表达式2 or 表达式3
b.表达式从左到右进行运算,如果第一个逻辑运算符为and,表达式1的值为假,则整个表达式的结果为假
举例:表达式1 and 表达式2 and 表达式3
c.如果or的左边的逻辑值为假 and的左边的逻辑值为真,则不再遵循短路原则,按照步骤分步计算
代码演示:
#1.逻辑运算符全部是and----》第一个and的左边为False
def a():
print("A")
return False
def b():
print("B")
return False
def c():
print("C")
return True
def d():
print("D")
return False
def e():
print("E")
return True
#False and False and True and False and True
"""
1.整个表达式的值:False
2.只有a函数被执行,打印的结果为A,其他所有的全部被短路
"""
if a() and b() and c() and d() and e():
print("ok")
#2.逻辑运算符全部是and----》第一个and的左边为True
def a():
print("A")
return True
def b():
print("B")
return True
def c():
print("C")
return False
def d():
print("D")
return False
def e():
print("E")
return True
#True and True and False and False and True
#True and False and False and True ----->A B
#False and False and True ------>C
"""
1.整个表达式的值:False
2.按照步骤分别操作,最终打印ABC
"""
if a() and b() and c() and d() and e():
print("ok")
#3.逻辑运算符全部是or----》第一个or的左边为True
def a():
print("A")
return True
def b():
print("B")
return False
def c():
print("C")
return True
def d():
print("D")
return False
def e():
print("E")
return True
#True or False or True or False or True
"""
1.整个表达式的值:True
2.打印A
"""
if a() or b() or c() or d() or e():
print("ok")
print("~~~~~~")
#4.逻辑运算符全部是or---》第一个or的左边为False
def a():
print("A")
return False
def b():
print("B")
return False
def c():
print("C")
return True
def d():
print("D")
return False
def e():
print("E")
return True
#False or False or True or False or True
#False or True or False or True ----->AB
#True or False or True ----->C
"""
1.整个表达式的值:True
2.打印ABC ok
"""
if a() or b() or c() or d() or e():
print("ok")
print("~~~~~~")
#5.逻辑运算符中的and和or的混合使用
#注意:局部使用短路原则
def a():
print("A")
return False
def b():
print("B")
return False
def c():
print("C")
return True
def d():
print("D")
return False
def e():
print("E")
return True
def f():
print("F")
return True
def g():
print("G")
return False
def h():
print("H")
return True
#False and False and True and False or True and True or False and True
#False or True and True or False and True ------>A
#True and True or False and True ----->E
#True or False and True ---->F
"""
1.整个表达式的值:True
2.打印AEF ok555【特殊情况:or的左边是True,则直接短路】
"""
if a() and b() and c() and d() or e() and f() or g() and h():
print("ok555555")
#注意:在实际应用中,一般会出现一个and和一个or,最好能对不同的条件添加括号
2.成员运算符
注意:成员运算符一般在list中使用
in:如果在指定列表中找到某个值,则返回True
not in :如果在指定列表中没有找到某个值,则返回True
3.身份运算符
is:判断两个标识符是否是引用同一个实体
is not:判断两个标识符是否是引用不同的实体
注意:运算的结果为布尔值
代码演示:
a = 10
b = 10
if a is b:
print("yes")
else:
print("no")
if a is not b:
print("yes")
else:
print("no")
b = 20
if a is b:
print("yes")
else:
print("no")
if a is not b:
print("yes")
else:
print("no")
#==
if a == b:
print("yes~~~~~")
if id(a) == id(b):
print("yes%%%%%")
总结:
a.is和id()比较的是变量在内存中的地址
b.==比较的是变量的值
4.运算符的优先级
注意:在实际应用中,尽量不要写过于复杂的表达式,如果有稍微复杂运算的话,尽量通过括号区别优先级