Python 入门到精通(5):Python运算符

原文出处: 头头哥   

博客前言

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。在计算器语言中运算符大致可以分为5种类型:算术运算符、连接运算符、关系运算符、赋值运算符和逻辑运算符。运算符也是计算机里比较好理解的人类语言之一,只要稍微懂点数学的,都能看懂算数运算符。在Python中常见的运算符有:
+*/**/<>!=//%&|^~>><<<=>===notandor 。在接下来的博文中再一一介绍这些运算符的具体事例。

 

写在前面

python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它

 

python运算符基础实例

代码正文&讲解:

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# coding=utf-8
#两个数字相加
sumNumber=1+2
print(sumNumber)      #输出结果:3
 
#两个字符串相加
sumString=“Nice work”
print(sumString)      #输出结果:Nice work
 
#两个数字相减
subNumber=21
print(subNumber)      #输出结果:1
 
#两个数字相乘或者字符串重复
multiplicationNumber=2*3
print(multiplicationNumber)      #输出结果:6
multiplicationString=“hello”*2
print(multiplicationString)      #输出结果:hellohello
#/—关于*号重复字符串之前的博客已经介绍过了—/
 
#两个数相除
divisionNumber=9/2
print(divisionNumber)      #输出结果:4
divisionNumber=9.0/2
print(divisionNumber)      #输出结果:4.5
divisionNumber=9/2.0
print(divisionNumber)      #输出结果:4.5
#/—除数或被除数中有任意一个是小数的话,商也会保留小数,反之取整—/
 
#求幂运算
powerNumber=2**3 #相当于2的3次幂,就是2*2*2 关于幂运算大家应该在数学里都很熟悉了
print powerNumber       #输出结果:8
 
#小于符号,返回值是bool值
lessThan=1<2
print(lessThan)        #输出结果:True
lessThan=1<1
print(lessThan)        #输出结果:False
 
#大于符号,返回值是bool值
moreThan=2>1
print(moreThan)        #输出结果:True
moreThan=2>2
print(moreThan)        #输出结果:False
 
#不等于符号 返回值是Bool值
notEqual=1!=2
print(notEqual)        #输出结果:True
notEqual=1!=1
print(notEqual)        #输出结果:False
 
#除法运算// 返回商的整数部分,抛弃余数
divisorNumber=10//3
print(divisorNumber)        #输出结果:3
 
#除法运算% 返回商的余数部分,抛弃商
divisorNumber=10%3
print(divisorNumber)        #输出结果:1
divisorNumber=10%1
print(divisorNumber)        #输出结果:0 /–没有余数则返回0–/
divisorNumberx=10//3         #divisorNumberx是商的整数部分
divisorNumbery=10%3         #divisorNumbery是余数
divisorNumberz=3*divisorNumberx+divisorNumbery    #divisorNumberz是除数乘以商的整数部分加上余数,得到的divisorNumberz的值就是被除数
print(divisorNumberz)        #输出结果:10
 
#按位与运算&, 按位与是指一个数字转化为二进制,然后这些二进制的数按位来进行与运算
operationNumber=7&18
print operationNumber        #输出结果:2
”’
这个有点绕,稍微多说下,如果对二进制不是太熟的朋友,可以打开电脑自带的计算器,按住win+q,输入”calculator”。
然后在打开的计算器设置成程序员模式, 就是View(查看)->>programmer(程序员).
然后我们将7转为二进制:111,自动补全8位:00000111,然后将18转为二进制补全8位后得到:00010010
最后将   00000111
跟       00010010 按位进行与运算,
/-
对与运算不熟的朋友可以看看百度百科的介绍,还是很详细的。
http://baike.baidu.com/link?url=lfGJREBvGCY5j7VdF2OO9n2mtIbSyNUD7lZyyY74QIetguL5lXIQUxY38Yr-p4z4WdUvHUKGjw9CDfagiun2Ea
-/
得到结果:00000010
我们都知道10二进制→十进制=2,所以7跟18的按位与的结果是二进制10(十进制2)
”’
 
#按位或运算|, 按位或是指一个数字转化为二进制,然后这些二进制的数按位来进行或运算
operationNumber=7|18
print operationNumber        #输出结果:23   #结题思路和按位与运算的一样,可以参考按位与运算
 
#按位异或
operationNumber=7^18
print operationNumber        #输出结果:21   #结题思路和按位与运算的一样,可以参考按位与运算
 
#按位翻转 ~   按位翻转公式: ~x= – (x+1)
operationNumber=~12  #~12=- (12+1) = -13
print operationNumber        #输出结果:-13   #结题思路和按位与运算的一样,可以参考按位与运算
 
#左移<<
”’
比如18左移就是将他的二进制形式00100100左移,得到00100100(36)。
左移规律:左移一个单位相当于乘2,左移两个单位相当于乘以4,左移三个单位相当于乘以8,
即:      左移n个单位相当于乘以2的n次幂
”’
operationNumber=12<<1
print operationNumber        #输出结果:24
operationNumber=3<<3
print operationNumber        #输出结果:24
 
#右移>>
”’
理解左移以后,右移就很好理解了。
右移是左移的逆运算,将对应的二进制数向右移动。
右移规律:右移一个单位相当于除以2,右移两个单位相当于除以4,右移三个单位相当于除以8,
即:      右移n个单位相当于除以2的n次幂
”’
operationNumber=12>>1
print operationNumber        #输出结果:6
operationNumber=12>>2
print operationNumber        #输出结果:3
 
#小于等于<= 比较运算,小于或等于返回一个bool值
operationNumber=3<=3
print operationNumber        #输出结果:True
operationNumber=3<=2
print operationNumber        #输出结果:False
 
#大于等于>= 比较运算,大于或等于返回一个bool值
operationNumber=2>=3
print operationNumber        #输出结果:False
operationNumber=3>=2
print operationNumber        #输出结果:True
 
#比较两个对象是否相等==
operationNumber=3==2
print operationNumber        #输出结果:False
operationString=“hi”==“hi”
print operationString        #输出结果:True
 
#逻辑非 not
operationx=True
operationy=not operationx
print operationy        #输出结果:False
operationz=False
print not operationz        #输出结果:True
 
#逻辑与 and
”’
True and True = True
True and False = False
False and True = False
False and False = False
”’
print True and True        #输出结果:True
 
#逻辑或 or
”’
True or True = True
True or False = True
False or True = True
False or False = False
”’
print False or False        #输出结果:False


这里的这些运算可能按位运算会感觉比较麻烦,不过没有关系,大家用多了就熟练了。

 

python运算符优先级

1.python运算符优先级排行榜: 

 在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

代码正文&讲解:

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# coding=utf-8
#优先级的简单实例
priorityNumber=2+1*4
print priorityNumber      #输出结果:6
 
#优先级使用实例
#以下优先级排名从高到低,在同一运算中,先执行优先级高的再执行低的,以此类推。
 
#Top 1:函数调用、寻址、下标
 
#Top 2:幂运算**
priorityNumber=2*2**3
print priorityNumber      #输出结果:16
 
#Top 3:翻转运算~
 
#Top 4:正负号
print 1+2*3      #输出结果:-5
 
#Top 5:*、/、%
print 2+1*2/5      #输出结果:2
 
#Top 6:+、-
print 3<<2+1      #输出结果:24
 
#Top 7:<<、>>
 
#Top 8:按位&、^、|
 
#Top 9:比较运算符
priority=2*3+2<=2+1*7
print priority      #输出结果:True
 
#Top 10:逻辑的not and or
 
#Top 11:lambda表达式


 

2.python运算符优先级使用规律: 

代码正文&讲解:

Python

1
2
3
4
5
6
7
8
9
#python优先级使用规律
#1、一般情况下是左结合的
#ps:在没有更高优先级运算符,即只有同级运算符时时从左到右结合
print 1+2+3*5+5      #输出结果:23
 
#2、出现赋值的时候一般是右结合
#ps:在有赋值运算符时,是右结合,即先算出1+2的值以后再赋值给priority
priority=1+2
print priority       #输出结果:23

 

2.python运算符优先级大招: 

大家可能会觉得Python运算符的优先级不容易记忆,而且有时候还容易混淆。在实际运用中根据业务逻辑可能我们知道要先做什么再做什么,但是却忘记Python运算符的优先级了,该怎么办?这里教大家一个杀手锏,绝对百试不爽。

代码正文&讲解:

Python

1
2
3
4
5
6
7
8
#python运算符优先级大招
”’比如说有这个需求:
        去商店买水,买3瓶水,每瓶5块,再买一个绿箭(假设绿箭3块),总共多少钱?
   这个简单的应用非常明显,需要先用乘法再用加法,如果这里你忘记了乘法和加法的优先级,可以这样:
”’
print (3*5)+3       #输出结果:18
 
#ps: 这只是一个简单的例子,只是为了告诉大家实际应用中实在不行咱就放大招。有备无患。

 

Python表达式

Python表达式基本概念: 

python中,值、变量和运算符共同组成的整体称为表达式

代码正文&讲解:

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#python表达式
#1 字符串表达式
“Hello”
 
#2 计算表达式
2+3
 
#3 赋值表达式
first=0
 
#4 变量表达式
first
 
#5 值表达式
 
#等等

 

博后练习

应上一篇博客Python基本语法[二],python入门到精通[四]园友的意见,给出浏览博客后的练习。如果大家有什么有意思的题目也可以拿出来一起捣鼓,或者留作下一篇博客的”博后练习”。

练习:

  • 弄清楚与或非二进制运算
  • 熟记python运算符优先级关系
  • 去商店买水,买3瓶水,每瓶5块,赶上双11,商店促销,现在每瓶降价1.5块,总共多少钱。(需要用放大招和不放大招两种方式)

 

博客总结

关于python的运算符大家如果有什么疑问或者补充的可以踊跃发言,我们一起探讨。

2
1 收藏

评论





转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn