jiay 发表于 2018-8-13 13:35:54

Python3.5修炼手册4-duyuheng

  运算符和操作对象
  运算符是一先特殊符号的集合
  操作对象是由运算符连接起来的对象
  Pyhon支持以下8个运算符
  ①算数运算符
  ②比较(关系)运算符
  ③赋值运算符
  ④逻辑运算符
  ⑤位运算符
  ⑥成员运算符
  ⑦身份运算符
  ⑧运算符优先级
  算数运算符
  +加:两个对象相加
  -减:得到负数或一个数减去另外一个数
  *乘:两个数相乘或反回一个被重复若干次的字符串
  /除:x除以y
  %取模:返回除法的余数
  ** 幂:返回x的y次幂
  // 取整数(地板除):返回商的整数部分(又被称为模糊除)
  小实战:
>>> print(a+b)  
15
  
>>> print(a-b)
  
5
  
>>> print(a*b)
  
50
  
>>> print(a/b)
  
2.0
  
>>> print(a**b)
  
100000
  
>>> print(13//2)
  
6
  
>>> print(13.0//2.0)
  
6.0
  
>>> print(13%2)
  
1
  小例子:算一下32位系统和64位系统支持多大内存
>>> 2**32/1024/1024/1024  
4.0
  
>>> 2**64/1024/1024/1024
  
17179869184.0
  2**32是2的32次方,这是32位系统最大支持的字节数。除以3个1024是意思是由B转换为KB,由KB转换为MB、在由MB转换为GB。这个例子可以说明32位操作系统最大只能支持4GB内存,而64位系统.......
  比较运算符
  ==   等于:比较对象是否相等
  !=不等于:比较两个对象是否不相等
  >    大于:返回x是否大于y
  <    小于 :返回x是否小于y。所有比较运算符返回1表示真,返回0表示假,与特殊的变量True和False等价。注意大小写。
  > =大于等于:返回x是否大于等于y
  <=   小于等于:返回x是否小于等于y
  小实战:
>>> a=10  
>>> b=20
  
>>> a==b
  
False
  
>>> a!=b
  
True
  
>>> a>b
  
False
  
>>> a>=b
  
False
  
>>> a<=b
  
True
  
>>> a+10>=b
  
True
  
>>> a+10>b
  
False
  
>>> a<=b-10
  
True
  
>>> a<b-10
  
False
  
>>> a==b-10
  
True
  在一些地方,会用1代表True,0代表False,这是正确也是合理的表达方式
  在python2中<>等同于!= 也表示不等于
  赋值运算符
  运算符                  实例:假设变量a为10,变量b为20
  =   简单的赋值运算符             c=a+b, 将a+b的运算结果赋值给c
  +=加法赋值运算符            c+=a, 等同于c=c+a
  -=减法赋值运算符            c-=a, 等同于c=c-a
  *=乘法赋值运算符            c*=a, 等同于c=c*a
  /=除法赋值运算符            c/=a, 等同于c=c/a
  %=取模赋值运算符            c%=a,等同于c=c%a
  **= 幂赋值运算符                c**=a,等同于c=c**a
  //= 取整(地板)除赋值运算符      c//=a,等同于c=c//a
  小实战:
>>> a=10  
>>> b=20
  
>>> c=0
  
>>> c=a+b
  
>>> print(c)
  
30
  
>>> c+=10
  
>>> print(c)
  
40
  
>>> c-=a
  
>>> print(c)
  
30
  
>>> c*=a
  
>>> print(c)
  
300
  
>>> c/=a
  
>>> print(c)
  
30.0
  
>>> c%=a
  
>>> print(c)
  
0.0
  
>>> c=a**5
  
>>> print(c)
  
100000
  
>>> c//=b
  
>>> print(b)
  
20
  
>>> print(c)
  
5000
  位运算符(比较不好理解)
  位运算符是把数字看作二进制计算的的
运算符                                                   实例:假设变量a为60,变量b为13  
& 按位与运算符:若参与运算的两个值的两个相应位都为1,ze该位的结果为1,否则为0                (a&b)输出结果为12, 二进制解释:0000 1100
  
| 按位或运算符:只要对应的两个二进制位有一个为1,结果位就为1                        (a|b)输出结果为61, 二进制解释:0011 1101
  
^ 按位异或运算符:当两个对应的二进制位相异时,结果为1                            (a^b)输出结果为49, 二进制解释:0011 0001
  
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1                      (~a) 输出结果为-61,二进制解释:1100 0011 ,在一个有符号二进制数的补码形式
  
<<左移动运算符:运算数的各个二进制位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0       a<<2 输出结果为240二进制解释:1111 0000
  
>>右移动运算符:把>>左边运算数的各个二进制位全部右移若干位,>>右边的数指定移动的位数             a>>2 输出结果为15, 二进制解释:0000 1111
  小实战:
>>> a=60  
>>> b=13
  
>>> c=0
  
>>> c=a&b
  
>>> print(c)
  
12
  
>>> c=a|b
  
>>> print(c)
  
61
  
>>> c=a^b
  
>>> print(c)
  
49
  
>>> c=~a
  
>>> print(c)
  
-61
  
>>> c=a<<2
  
>>> print(c)
  
240
  
>>> c=a>>2
  
>>> print(c)
  
15
  逻辑运算符
运算符       逻辑表达式    描述                                                                  实例:假设变量a为10,量b为20  
and         x and y   布尔"与":如果x为False,x and y 就返回False:否则就返回y的计算值      (a and b)返回20
  
or          x ory    布尔"或":如果x是非0,就返回x的值:否则就返回y的值                   (a or b)返回10
  
not         not x      布尔"非":如果x为True,就返回False;如果x为False,就返回True         not(a and b)返回False
  小实战:
>>> a=10  
>>> b=20
  
>>> a and b
  
20
  
>>> a or b
  
10
  
>>> not a
  
False
  
>>> not b
  
False
  
>>> not -1
  
False
  
>>> not False
  
True
  
>>> not True
  
False
  成员运算符
运算符                                 实例:  
in    如果在指定的序列找到值,就返回True;否则就返回False       x在y序列中,如果x在y序列中,就返回True
  
not in 如果在指定的序列没有找到值,就返回True;否则返回False      x不在y序列中,如果x不在y序列中,就返回True
  小实战:
>>> a=10  
>>> b=5
  
>>> list=
  
>>> print(a in list)
  
False
  
>>> print(a not in list)
  
True
  
>>> print(b notin list)
  
False
  
>>> print(bin list)
  
True
  身份运算符
  身份运算符用于比较两个对象的存储单元
运算符                         实例  
is      判断标识符是否引用自一个对象      x is y,如果id(x)等于id(y),is返回结果True
  
is not   用于判断两个标识符是否引用自不同对象   x is not y, 如果id(x)等于id(y),is not 就返回结果True
  小实战:
>>> a= 10  
>>> b =10
  
>>> print(a is b)
  
True
  
>>> print(a is not b)
  
False
  
>>> b=20
  
>>> print(a is b)
  
False
  
>>> print(a is not b)
  
True
  运算符的优先级
  下面列出从最高到最低优先级的所有运算符
  运算符
  **   指数(最高优先级)
  ~+-    按位翻转,一元加号和减号(最后两个的方法名为 +@ 和 -@)
  */% // 乘、除、取模和取整数
  >> <<右移左移
  &      位AND
  ^|   位运算符
  <= < > >=比较运算符
  <> == != 等于运算符
  = % = /= //= -=+= *= **= 赋值运算符
  is is not 身份运算符
  in not in 成员运算符
  not or and逻辑运算符
  当一个表达式中出现多个操作符时,求值的顺序依赖于优先级规则。
  在Pyhon中有很多操作运算符,可以使用缩略词PEMDAS(顺序运算)帮助记忆部分规则
  (Parentheses,P)括号拥有最高的优先级,可以强制表达式按照需要顺序求职,括号中的表达式会优先执行,也可以利用括号使得更加易读。
  例如:先做加减后做乘除
>>> a=20  
>>> b=15
  
>>> c=10
  
>>> d=5
  
>>> e=0
  
>>> e=(a-b)*c/d
  
>>> print('(a-b)*c/d=',e)
  
(a-b)*c/d= 10.0
  若是不加括号
>>> e=a-b*c/d  
>>> print('(a-b)*c/d=',e)
  
(a-b)*c/d= -10.0
  如果表达式比较长使用括号会更容易看懂
  未加括号
>>> e=a+b+c-c*d  
>>> print('(a-b)*c/d=',e)
  
(a-b)*c/d= -5
  加括号会看起非常直观,运算结果还是一样的
>>> e=(a+b+c)-(c*d)  
>>> print('(a+b+c)-(c*d)=',e)
  
(a+b+c)-(c*d)= -5
  (Exponentiation,E)乘方操作拥有更高的优先级
  例如:
>>> 2**1+2  
4
  
>>> 2**(1+2)
  
8
  
>>> 2**2*3
  
12
  
>>> 2*2**3
  
16
  
>>> 2**(2*3)
  
64
  (Multiplication,M)乘法和(Division,D)除法优先级相同,并且高于相同优先级的(Addition,A)加法和(Subtraction,S)减法
  例如:
>>> a+b*c-d  
165
  
>>> a*b/c+d
  
35.0
  优先级相同的操作按照从左到右的顺序求值(乘方除外)
>>> a+b-c+d  
30
  
>>> a+b-c-d
  
20
页: [1]
查看完整版本: Python3.5修炼手册4-duyuheng