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



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351