Python的运算符和进制
复习
位运算中,只有0,1 &(与:同时为1才为1)
& | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
位运算中,|(或:有一个为1就为1)
| | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
位运算中,^(位异或:相同为0,不同为1)
^ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
位运算中,~(非:非假即真,非真即假,正数非就为负数加一,负数非就为正数减一)
~ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
0#与或异非的运算
>>> a=7
>>> b=63
>>> a&b
7
>>> a|b
63
>>> a^b
56
>>> ~a
-8
#优先级的问题:
>>> a=7
>>> b=37
>>> (a>5)&(b>60)
False
>>> a>6&b>60
True
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
针对逻辑运算的进一步研究:
1:在没有()的情况下not优先级高于and,and优先级高于or,即
优先级关系为()>not>and>or,同一优先级从左往右计算。
Python成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
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。 |
## Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
3>4 or 4<3 and 1==1 #结果:false
1 < 2 and 3 < 4 or 1>2 #结果:true
2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 #结果:true
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 #结果:true
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 > 8 #结果:true
1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 #结果:false
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6#结果:false
数据类型的强制转换
强转类型 | 描述 |
---|---|
int(x) | 将x转换成一个整数 |
float(x) | 将x转换成浮点数 |
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
bin(x) | 将一个整数转换为一个二进制字符串 |
#强制转换的例子:
>>> a=input(">>>")
>>>123
>>> type(a)
<class 'str'>
>>> int(a)
123
>>> type(int(a))
<class 'int'>
>>> a=(1,2,3)
>>> type(a)
<class 'tuple'>
>>> list(a)
[1, 2, 3]
>>> type(list(a))
<class 'list'>
>>> a=123
>>> b=float(a)
>>> print(type(a),type(b))
<class 'int'> <class 'float'>
>>> chr(65)
'A'
>>>
转换为Unicode值:65-A,97-a
十进制|二进制|八进制|十六进制
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
1 | 0000 0001 | 0000 0001 | 0000 0001 |
2 | 0000 0010 | 0000 0002 | 0000 0002 |
3 | 0000 0011 | 0000 0003 | 0000 0003 |
4 | 0000 0100 | 0000 0004 | 0000 0004 |
5 | 0000 0101 | 0000 0005 | 0000 0005 |
6 | 0000 0110 | 0000 0006 | 0000 0006 |
7 | 0000 0111 | 0000 0007 | 0000 0007 |
8 | 0000 1000 | 0000 0010 | 0000 0008 |
9 | 0000 1001 | 0000 0011 | 0000 0009 |
10 | 0000 1010 | 0000 0012 | 0000 000a |
11 | 0000 1011 | 0000 0013 | 0000 000b |
12 | 0000 1100 | 0000 0014 | 0000 000c |
13 | 0000 1101 | 0000 0015 | 0000 000d |
14 | 0000 1110 | 0000 0016 | 0000 000e |
15 | 0000 1111 | 0000 0017 | 0000 000f |
16 | 0001 0000 | 0000 0018 | 0000 0010 |
#小技巧:只能将二进制转换为八进制或者转换为十六进制,转换为八进制的时候分为三位数进行运算,从右往左,转换为十六进制的时候分为四位数进行运算,也是从右往左,转换为十进制就是1*2的任何次方减一。