数字(Number)
Python3 中数字一共有四种类型:
- 1.整数(int):1,2,3,4…(Python 中只有一种整形,没有 long)
- 2.布尔值(bool):True 和 False
- 3.浮点数(float):1.23 和 3E-2
- 4.复数(complex):1 + 2j 和 1.1 + 2.2j
is_int = 10
is_bool = True
is_float = 1.23
is_complex = 1 + 2j
print(type(is_int))
print(type(is_bool))
print(type(is_float))
print(type(is_complex))
输出样例:
<class 'int'>
<class 'bool'>
<class 'float'>
<class 'complex'>
运算符
运算符包含:①算数运算符;②关系(比较)运算符;③赋值运算符;④位运算符;⑤逻辑运算符;⑥成员运算符;⑦身份运算符
算数运算符
符号 | 含义 |
---|---|
a + b | 两个对象相加 |
a - b | 得到负数或是一个数减去另一个数 |
a * b | 两个数相乘或是返回一个被重复若干次的字符串 |
a / b | x 除以 y(返回浮点数) |
a % b | 返回除法的余数 |
a ** b | 返回 x 的 y 次幂 |
a // b | 整除,返回商的整数部分(返回整数,向下取整) |
- 取余公式:
a % b = a - b*(a//b)
- 浮点数和整形混合运算的时候,会将整形转化为浮点数。
a, b = 3, 4
print(a, b)
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(b % a)
print(a ** b)
print(b // a)
输出样例:
3 4
7
-1
12
0.75
1
81
1
关系(比较)运算符
符号 | 含义 |
---|---|
a == b | 比较对象是否相等 |
a != b | 比较两个对象是否不相等(Python3.x 取消了<>关系运算符) |
a > b | 返回x是否大于y |
a < b | 返回x是否小于y。 |
a >= b | 返回x是否大于等于y |
a <= b | 返回x是否小于等于y |
- 所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。
a, b = 3, 5
print(a == b)
print(a != b)
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
输出样例:
False
True
False
True
False
True
赋值运算符
符号 | 含义 |
---|---|
= | 简单的赋值运算符;c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符; c += a 等效于 c = c + a |
-= | 减法赋值运算符; c -= a 等效于 c = c - a |
*= | 乘法赋值运算符; c *= a 等效于 c = c * a |
/= | 除法赋值运算符; c /= a 等效于 c = c / a |
%= | 取模赋值运算符; c %= a 等效于 c = c % a |
**= | 幂赋值运算符; c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符; c //= a 等效于 c = c // a |
- Python可以同时为多个变量赋值,如
a, b = 1, 2
。也可以连续赋值,如:a = b = 2
。
a, b, c = 3, 4, 0
c = a + b
print(c)
c += a
print(c)
c -= a
print(c)
c *= a
print(c)
c /= a
print(c)
c %= a
print(c)
c **= a
print(c)
c //= a
print(c)
输出样例:
7
10
7
21
7.0
1.0
1.0
0.0
位运算符
位运算是将数字看做二进制来进行计算。
符号 | 含义 |
---|---|
a & b(按位与) | 对应位都为 1 时结果为 1,否则为 0。 |
a | b(按位或) | 对应位置至少存在一个 1 时结果为 1,否则为 0。 |
a ^ b(按位异或) | 对应位置不同时结果为 1,否则为 0。 |
~ a | 将某二进制位取反。 |
a << b | 将 a 的各个二进制位相左(高位)移动 b 个位置,高位丢弃,低位补 0。 |
a >> b | 将 a 的各个二进制位相右(低位)移动 b 个位置。 |
a, b = 7, 2 # 111, 010
print(a & b)
print(a | b)
print(a ^ b)
print(~ a)
print(a << b)
print(a >> b)
输出样例:
2
7
5
-8
28
1
逻辑运算符
符号 | 含义 |
---|---|
a and b | 如果 a 为 False 返回 False,否则返回 b 的值。 |
a or b | 如果 a 为 True 返回 True,否则返回 b 的值。 |
not a | 如果 a 为 True 返回 False,否则返回 True。 |
a, b = True, False
print(a and b)
print(a or b)
print(not a)
print(not b)
输出样例:
False
True
False
True
成员运算符
符号 | 含义 |
---|---|
a in b | 如果 a 在指定的序列 b 中,返回 True,否则返回 False。 |
a not in b | 如果 a 不在指定的序列 b 中,返回 True,否则返回 False。 |
- 其中的序列也可以是字符串。
a, b, c = 3, 5, "a"
lst = [1, 2, 3, 4, 6, 7]
s = "bcdefg"
print(a in lst)
print(b not in lst)
print(c in s)
输出样例:
True
True
False
身份运算符
符号 | 含义 |
---|---|
a is b | 判断两个变量是不是引用自同一个对象。 |
a is not b | 判断两个变量是不是引用自不同对象。 |
- 对于小于 256 的整数,如果值相等,则分配同样的内存 id,所以用
is
会返回 True。 - 对于大于 256 的整数,根据具体赋值定地址。
a = 256
b = 256
c = 257
d = 257
e = f = 257
g, h = 257, 257
print(a is b)
print(c is d)
print(e is f)
print(g is h)
输出样例:
True
False
True
True
运算符优先级
运算符优先级(从高到低):
符号 | 含义 |
---|---|
** | 指数 |
~ | 按位翻转 |
* / % // | 乘、除、取模、整除 |
+ - | 加、减 |
>> << | 右移、左移 |
& and | 按位与 |
^ | | 按位异或、按位或 |
<= < > >= | 小于等于、小于、大于、大于等于 |
== != | 等于、不等于 |
= %= /= //= -= += *= **= | 各类赋值运算符 |
is、is not | 身份运算符 |
in、not in | 成员运算符 |
and or not | 逻辑运算符 |
进制转化
手动计算进制转化
常用进制的前缀:①二进制以 0b
开头,②八进制以0o开头,③十六进制以0x开头
print(0b1101010)# 106
print(0o125) # 85
print(0x3f2a1) # 258721
使用函数进行进制转化
- 如果字符串表示的进制数不满足后面填写的,会报错。
print(int("1101010", 2))
print(bin(106))
print(int("125", 8))
print(oct(85))
print(int("3f2a1", 16))
print(hex(258721))
106
0b1101010
85
0o125
258721
0x3f2a1
- 八进制 ⇔ \Leftrightarrow ⇔ 二进制:
# 八进制 -> 二进制
print(bin(0o125))
print(bin(int("125", 8)))
# 二进制 -> 八进制
print(oct(0b1101010))
print(oct(int("1101010", 2)))
- 十六进制 ⇔ \Leftrightarrow ⇔ 二进制:
# 十六进制 -> 二进制
print(bin(0x3f2a1))
print(bin(int("3f2a1", 16)))
# 二进制 -> 十六进制
print(hex(0b1101010))
print(hex(int("1101010", 2)))
- 十六进制 ⇔ \Leftrightarrow ⇔ 八进制:
# 十六进制 -> 八进制
print(oct(0x3f2a1))
print(oct(int("3f2a1", 16)))
# 八进制 -> 十六进制
print(hex(0o125))
print(hex(int("125", 8)))