什么是运算符
Python语言支持一下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份证运算符
- 运算符优先级
Python算术运算符
以下假设变量a为10,变量b为21:
运算符: 描述: 实例:
+ 加-两个对象相加 a+b 输出结果 31
- 减-得到负数或是一个数减去另一个数 a - b 输出结果 -11
* 乘-两个数相乘或是返回一个呗重复若干次的字符串 a * b 输出结果 210
/ 除-x除以y a / b 输出结果 2.1
% 取余-返回除法的余数 a % b 输出结果 1
** 幂-返回x的y次幂 a ** b 为10的21
// 取整数-返回商的整数部分 9//2 输出结果 4, 9.0//2.0 输出结果 4.0
算术运算符的实例:
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
Python算术运算符
以下假设变量a为1,变量b为3:
运算符: 描述: 实例:
== 等于- 比较对象是否相等 (a==b)返回False
!= 不等于-比较两个对象是否不相等 (a!=b) 返回Ture
> 大于- 返回x是否大于y (a>b) 返回False
< 小于- 返回x是否小于y。 (a<b) 返回Ture
>= 大于等于- 返回x是否大于等于y (a>=b) 返回False
<= 小于等于- 返回x是否小于等于y ( a<=b ) 返回Ture
所有比较运算符返回1时为真(Ture),返回0时为假(False)。
注意这些变量名的《首字母大写》,Python中对大小写字母敏感 。
实例:
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 ( a >= b ):
print("6 - a大于等于 b")
else:
print("6 - a 小于 b")
输出结果为:
1 - a不等于b
2 - a不等于b
3 - a大于等于b
4 - a大于b
5 - a小于等于 b
6 - a 小于 b
Python位运算符
按位运算符是把数字看作二进制来计算,python中扥按位运算法则如下:
下中变量 a 为 60,b 为 13 二进制格式如下:
a = 0011 1100;
b = 0000 1101;
------------------
a&b = 0000 1100;
a|b = 0011 1101;
a^b = 0011 0001;
~b = 1100 0011;
运 算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
实例:
#!/usr/bin/python3
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
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
Python逻辑运算符
python语言支持逻辑运算符:运算符: and (与) or (或) not (非)
大小写敏感 逻辑运算符:and(且) or(或) not(非) print(True and False);#同时为真且为真, print(False or True);#只要一个正确就行 print(False or True);#取反值
Python成员运算符
Python还支持成员运算符,为了测试实例中包含了一系列的成员,包括字符串,列表或元组。
in(有):如果在指定的序列中找到值返回True,否则返回False.
x在序列中,如果在返回Ture
not in(没有):如果在特定的序列中没有找到值返回True,否则返回False.x不在序列中,如果不在返回Ture
实例:
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 中
Python身份运算符
身份运算符用于比较两个对象的存储单元
is :
is 是判断两个标识符是不是引用自同一个对象; x is y ,类似 id(x)==id(y)如果引用的是同一个对象,返回True,否则返回False
is not:is not 是判断两个标识符是不是引用自不同的对象; x is not y,类似id(a)!= id(b), 如或引用的不是同一个对象则返回True,否则返回False.
注:id()函数用于获取对象内存地址。
例如:
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 用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等。
Python运算符优先级
下列表示出从最高到最低优先级的所有运算符:
运算符 描述:
** 指数(最高优先级)
~+- 按位翻转,一元加号和减号(最后两个方法名为+@和-@)
* / % // 乘,除,取模(取余数值)和取整除
+ - 加减法
>> << 右移,左移运算符
& 位 ‘AND’
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
=% =/ = //= -= += *= **= 赋值预算符
is / is not 身份运算符
in / not in 成员运算符
not / or / and 逻辑运算符
以下实例演示了Python所有运算符优先级的操作:
#/usr/bin/python03
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
笔记:开始不理解这段:
1:
以下假设变量 a 为 10,b 为 20;
and x and y (and 布尔值“与”)—如果x 为False, x and y 返回False,否则它返回a的计算值,(a and b)返回20。
百度之后的到结论:
python 中的and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值;
or 也是从左到有计算表达式,返回第一个为真的值;
其中数字0 是假,其他都是真;
字符“ ”是假,其他都是真;
2:
一开始输入
a = 00111100
这个赋值语句在Python中提示错误,在在相关知识中知道Python中的数字有以下表达方式:
2进制是以0b开头:例如:0b11 则表达十进制的3
8进制是以0o开头:例如:0o11 则表达十进制的9
16进制是以0x开头的:例如:0x11 则表达十进制的17
但是在测试中遇到问题,输出来的被自动化转换为十进制:
但是在测试中遇到问题,输出来的被自动化转换为十进制:
a = 0b00111100
print (a)
输出值为:
60
在找怎么输出二进制中,得到以下内容:
分别使用 bin, oct, hex 可输出数字的二进制,八进制。十六进制,例如:
a = 0b00111100
a = 60
print (bin (a))
# 二进制输出结果为:0b111100
print (oct (a))
# 八进制输出结果为:0o74
print (hex (a))
# 十六进制输出结果为:0x3c
3:
脚本式编码中:ID地址一致,两个变量的引用对象也一致:
b=5
a=5
print(id(a))
#输出结果:496068800
print(id(b))
#输出结果:496068800
print( a is b )
#输出结果为:True