python运算符
什么是运算符?
比如1+2=3,其中1和2被称为操作数,‘+’被陈为运算符。
python支持以下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 身份运算符
- 逻辑运算符
- 条件运算符
- 运算符优先级
- 成员运算符
- 算术运算符
a=2
b=3
a+b=5
a-b=-1
----------
a*b=6
s='-'*5
print(s)
#out:-----
----------
a/b=0.666666666
#注做除法时总会返回一个浮点类型(float)
print(6/2)
#out:3.0
----------
b%a=1--------取模-返回除法的余数
a**b=9-------幂-返回a的b次幂
3//2=1--------取证除-向下去接近除数的整数
比较运算符
a=1
b=2
a == b------#False,等于。注意a=1是赋值,不是等于
a != b-----#True
a > b------#F
a < b-------#T
a = 2----#改变赋值
a >= b----#T
b = 1--------#改变赋值
a <= b-------#F
赋值运算符
假设a=1,b=2
a = 1-----#print(a)-1
a += b-----#等于a=a+b---3
a -= b-----#等于a=a-b
a *= b------#a=a*b----2
a /= b------#a=a/b----0.5
b %= a------#b=b%a----2
a **= b------#a=a**b----1
print(25**0.5)
#out:5.0
a=3
a // =b------#a=a//b----1
结合着算术运算符看
身份运算符
is 是判断两个标识符是不是引用自一个对象
is not 是判断两个标识符是不是引用自不同对象
print(bool(0))
print(0 is False)
print(0 is not False)
#out:
#False
#False
#True
虽然0的布尔值是False,但不等于False,因为在计算机中占用的内存区域不同,是用不同的id来辨别0和False的,同理1和True也是如此。
逻辑运算符
所有与空有关的属性值,如0,None,‘ ’,都是False
所有非空的值为True
not(非)
a=True
a=not a
print(a)
#out:False
总结:
如果x为a=True,则返回False,如果x值为False,则返回True。
and(与)
True and False------#False
False and True------#False
True and True------#True
False and False------#False
总结:
1.一False全False
2.若第一个值为True,则看第二个值,第二个值为False,则False,第二个值为True则为True
or(或)
True and False------#True
False and True------#True
True and True------#True
False and False------#False
总结:
1.一True全True
2.若第一个值为True,则True,若第一个值为False,则看第二个,第二个为True,则True,若第二值为False,则False。
练习:
a=0
a=not a
print(a)
#out:True
----------
a=6
a=not a
print(a)
#out:False
---------
a=1 and 0
print(a)
#out:0
---------
a=True and print('hello')-----#同为真时输出第二个
#out:hello
--------
a=False and 6
print(a)
#out:False
---------
a=False and 0
print(a)
#out:False-----------同为假时,遇到第一个假则输出
---------
a=False or 9
print(a)
#out:9
---------
a=0 or None
print(a)-------------#同为假时输出第二个
#out:None
-----------
a=print('hello') or 1--------#遇到第一个True就输出
#out:hello
条件运算符(三元运算符)
语法: 语句1 if 条件表达式 else 语句2
print('python') if False else print('java')
#out:java
print('python') if True else print('java')
#out:python
执行流程:
条件运算符在执行时,会先对条件表达式进行求值判断
如果判断结果为True 则会执行语句1,并返回执行结果
如果判断结果为False 则会执行语句2 ,并返回执行结果
练习
现在有 a b c三个变量 三个变量分别保存3个值
通过条件运算符获取三个值中的最大值
a=12
b=22
c=16
#-------------------------method_one
m_1=a if a>b else b
m=m_1 if m_1>c else c
print(m)
#out:22
#-------------------------method_two
m=a if a>b else (b if b>c else c)
print(m)
#out:22
#-------------------------method_three
m=a if (a>b and a>c) else (b if b>c else b)
print(m)
#out:22
比较推荐method_one和method_three
运算符优先级
a = not 4 > 2 and 5 < 6 or 3 < 4
print(a)
#out:True
我们用反证法来推导一下:
假如or和and的优先级一样高从左往右计算 运算结果是4
假如or的优先级比and的高 一样是从左往右计算 运算结果还是4
假如and的优先级比or的高 运算结果是2
所以运算的优先级是:
not>and>or
如果不知道可自行百度
成员运算符
in 如果在指定的序列中找到值返回True,否则False
a='python'
print('y' in a)
#out:True
not in 如果在制定的序列中没有找到返回值True,否则False
a='java'
print('y' not in a)
#out:True