2019-07-23 python 3 运算符

本文章介绍:

1.运算符的分类

2.运算符的优先级

感悟:

新增的运算符是身份运算符(is)和成员运算符(in 、not in)。

比较难理解的运算符是逻辑运算符。

要牢记运算符的使用和运算符的优先级注意 

当一个计算里面有多个运算符进行时,记得考虑下优先级,例如 x or y and z,先算and再算or.

1.运算符的分类

 (1)操作数和运算符

   举个简单的例子 4 +5 = 9 。 

   例子中,4 和 5 被称为操作数,"+" 称为运算符

(2)运算符的分类(7类)

Python语言支持以下类型的运算符:

算术运算符

比较(关系)运算符

赋值运算符

逻辑运算符

位运算符

成员运算符

身份运算符

(3)算术运算符

以下假设变量a为10,变量b为21:

拓展:

python中没有自增运算符的(a++ / a--)。

python的自增运算就是a=a+1或者a+=1.

注意以下两个的意思:

(1) / 和//

(2) ** ,例如x**j

实例(Python 3.0+)

#!/usr/bin/python3

a = 21

b = 10

c = 0

c = a + b

print ("1 - c 的值为:", c)

c = a - b

print ("2 - c 的值为:", c)

c = a * b

print ("3 - c 的值为:", c)

c = a / b

print ("4 - c 的值为:", c)

c = a % b

print ("5 - c 的值为:", c)

# 修改变量 a 、b 、c

a = 2

b = 3

c = a**b

print ("6 - c 的值为:", c)

a = 10

b = 5

c = a//b

print ("7 - c 的值为:", c)

以上实例输出结果:

1 - c 的值为: 31

2 - c 的值为: 11

3 - c 的值为: 210

4 - c 的值为: 2.1

5 - c 的值为: 1

6 - c 的值为: 8

7 - c 的值为: 2

(4)比较运算符

以下假设变量a为10,变量b为20:

注意:

== 这是等于 ,=是赋值

实例(Python 3.0+)

#!/usr/bin/python3

a = 21

b = 10

c = 0

if ( a == b ):

  print ("1 - a 等于 b")

else:

  print ("1 - a 不等于 b")

if ( a != b ):

  print ("2 - a 不等于 b")

else:

  print ("2 - a 等于 b")

if ( a < b ):

  print ("3 - a 小于 b")

else:

  print ("3 - a 大于等于 b")

if ( a > b ):

  print ("4 - a 大于 b")

else:

  print ("4 - a 小于等于 b")

# 修改变量 a 和 b 的值

a = 5;

b = 20;

if ( a <= b ):

  print ("5 - a 小于等于 b")

else:

  print ("5 - a 大于  b")

if ( b >= a ):

  print ("6 - b 大于等于 a")

else:

  print ("6 - b 小于 a")

以上实例输出结果:

1 - a 不等于 b

2 - a 不等于 b

3 - a 大于等于 b

4 - a 大于 b

5 - a 小于等于 b

6 - b 大于等于 a

(5)赋值运算符

最简单的赋值就是=,其他赋值是搭配算法运算符的,例如加法赋值运算符(+=),减法赋值运算符等(-=)。

以下假设变量a为10,变量b为20:

实例(Python 3.0+)

#!/usr/bin/python3

a = 21

b = 10

c = 0

c = a + b

print ("1 - c 的值为:", c)

c += a

print ("2 - c 的值为:", c)

c *= a

print ("3 - c 的值为:", c)

c /= a

print ("4 - c 的值为:", c)

c = 2

c %= a

print ("5 - c 的值为:", c)

c **= a

print ("6 - c 的值为:", c)

c //= a

print ("7 - c 的值为:", c)

以上实例输出结果:

1 - c 的值为: 31

2 - c 的值为: 52

3 - c 的值为: 1092

4 - c 的值为: 52.0

5 - c 的值为: 2

6 - c 的值为: 2097152

7 - c 的值为: 99864

(6)位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

下表中变量 a 为 60,b 为 13二进制格式如下:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011


实例(Python 3.0+)

#!/usr/bin/python3

a = 60            # 60 = 0011 1100

b = 13            # 13 = 0000 1101

c = 0     # 此处可以c不用赋初值,直接进行运算公式c=a&b

c = a & b;        # 12 = 0000 1100

print ("1 - c 的值为:", c)

c = a | b;        # 61 = 0011 1101

print ("2 - c 的值为:", c)

c = a ^ b;        # 49 = 0011 0001

print ("3 - c 的值为:", c)

c = ~a;          # -61 = 1100 0011

print ("4 - c 的值为:", c)

c = a << 2;      # 240 = 1111 0000

print ("5 - c 的值为:", c)

c = a >> 2;      # 15 = 0000 1111

print ("6 - c 的值为:", c)

以上实例输出结果:

1 - c 的值为: 12

2 - c 的值为: 61

3 - c 的值为: 49

4 - c 的值为: -61

5 - c 的值为: 240

6 - c 的值为: 15

(7)逻辑运算符(判断True False )

逻辑运算可能会涉及字符串,数字的判断。

逻辑运算是涉及到一个短路问题,计算都是从左往右计算的。

何为真?数字中非0为真(0为假),字符串中非" "为真(" "为假)。

X and Y:

如果X and  Y,若X 为True,则返回Y的值;若X 为False,则返回False。

作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。

and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量.

X or Y:

如果X or Y,若X 为True,则返回x的值;否则返回Y的值。

或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量.

实例:

详细可以看这个官网:https://blog.csdn.net/lqzdreamer/article/details/77171255

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

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

实例(Python 3.0+)

#!/usr/bin/python3

a = 10

b = 20

if ( a and b ):

  print ("1 - 变量 a 和 b 都为 true")

else:

  print ("1 - 变量 a 和 b 有一个不为 true")

if ( a or b ):

  print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")

else:

  print ("2 - 变量 a 和 b 都不为 true")

# 修改变量 a 的值

a = 0

if ( a and b ):

  print ("3 - 变量 a 和 b 都为 true")

else:

  print ("3 - 变量 a 和 b 有一个不为 true")

if ( a or b ):

  print ("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")

else:

  print ("4 - 变量 a 和 b 都不为 true")

if not( a and b ):

  print ("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")

else:

  print ("5 - 变量 a 和 b 都为 true")

以上实例输出结果:

1 - 变量 a 和 b 都为 true

2 - 变量 a 和 b 都为 true,或其中一个变量为 true

3 - 变量 a 和 b 有一个不为 true

4 - 变量 a 和 b 都为 true,或其中一个变量为 true

5 - 变量 a 和 b 都为 false,或其中一个变量为 false

(8)成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

实例(Python 3.0+)

#!/usr/bin/python3

a = 10

b = 20

list = [1, 2, 3, 4, 5 ];

if ( a in list ):

  print ("1 - 变量 a 在给定的列表中 list 中")

else:

  print ("1 - 变量 a 不在给定的列表中 list 中")

if ( b not in list ):

  print ("2 - 变量 b 不在给定的列表中 list 中")

else:

  print ("2 - 变量 b 在给定的列表中 list 中")

# 修改变量 a 的值

a = 2

if ( a in list ):

  print ("3 - 变量 a 在给定的列表中 list 中")

else:

  print ("3 - 变量 a 不在给定的列表中 list 中")

以上实例输出结果:

1 - 变量 a 不在给定的列表中 list 中

2 - 变量 b 不在给定的列表中 list 中

3 - 变量 a 在给定的列表中 list 中

(9)身份运算符

身份运算符用于比较两个对象的存储单元

注: id() 函数用于获取对象内存地址。

以下实例演示了Python所有身份运算符的操作:

实例(Python 3.0+)

#!/usr/bin/python3

a = 20

b = 20

if ( a is b ):

  print ("1 - a 和 b 有相同的标识")

else:

  print ("1 - a 和 b 没有相同的标识")

if ( id(a) == id(b) ):

  print ("2 - a 和 b 有相同的标识")

else:

  print ("2 - a 和 b 没有相同的标识")

# 修改变量 b 的值

b = 30

if ( a is b ):

  print ("3 - a 和 b 有相同的标识")

else:

  print ("3 - a 和 b 没有相同的标识")

if ( a is not b ):

  print ("4 - a 和 b 没有相同的标识")

else:

  print ("4 - a 和 b 有相同的标识")

以上实例输出结果:

1 - a 和 b 有相同的标识

2 - a 和 b 有相同的标识

3 - a 和 b 没有相同的标识

4 - a 和 b 没有相同的标识

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

>>>a = [1, 2, 3]

>>> b = a

>>> b is a

True

>>> b == a

True

>>> b = a[:]

>>> b is a

False

>>> b == a

True

2.运算符的优先级

优先级由高到低:

() -**--算术运算符--位运算符(>>  \ << \& ^ |)--比较运算符--赋值运算符--身份运算符--成员运算符--逻辑运算符(not and or)。

实例(Python 3.0+)

#!/usr/bin/python3

a = 20

b = 10

c = 15

d = 5

e = 0

e = (a + b) * c / d      #( 30 * 15 ) / 5

print ("(a + b) * c / d 运算结果为:",  e)

e = ((a + b) * c) / d    # (30 * 15 ) / 5

print ("((a + b) * c) / d 运算结果为:",  e)

e = (a + b) * (c / d);    # (30) * (15/5)

print ("(a + b) * (c / d) 运算结果为:",  e)

e = a + (b * c) / d;      #  20 + (150/5)

print ("a + (b * c) / d 运算结果为:",  e)

以上实例输出结果:

(a + b) * c / d 运算结果为: 90.0

((a + b) * c) / d 运算结果为: 90.0

(a + b) * (c / d) 运算结果为: 90.0

a + (b * c) / d 运算结果为: 50.0



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。