Python 运算符与表达式

3.1 算术运算符

算术运算符用于执行基本的数学运算。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a = 10
b = 3

# 加法
print(a + b) # 13

# 减法
print(a - b) # 7

# 乘法
print(a * b) # 30

# 除法(返回浮点数)
print(a / b) # 3.3333333333333335

# 整除(向下取整)
print(a // b) # 3

# 取余(模运算)
print(a % b) # 1

# 幂运算
print(a ** b) # 1000

除法注意事项

1
2
3
4
5
6
7
8
# 普通除法返回浮点数
print(10 / 2) # 5.0

# 整除返回整数
print(10 // 2) # 5

# 负数整除向下取整
print(-10 // 3) # -4(不是 -3)

3.2 比较运算符

比较运算符用于比较两个值,返回布尔值(True 或 False)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
x = 10
y = 20

# 等于
print(x == y) # False

# 不等于
print(x != y) # True

# 大于
print(x > y) # False

# 小于
print(x < y) # True

# 大于等于
print(x >= 10) # True

# 小于等于
print(y <= 20) # True

链式比较

Python 支持链式比较,使代码更简洁:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
age = 25

# 传统写法
if age >= 18 and age <= 60:
print("成年人")

# Python 链式比较
if 18 <= age <= 60:
print("成年人")

# 更多例子
x = 5
print(1 < x < 10) # True
print(1 < x < 5) # False
print(10 == x > 3) # False

3.3 逻辑运算符

逻辑运算符用于组合多个条件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a = True
b = False

# 与(and)- 两个都为 True 才返回 True
print(a and b) # False
print(a and a) # True

# 或(or)- 至少一个为 True 就返回 True
print(a or b) # True
print(b or b) # False

# 非(not)- 取反
print(not a) # False
print(not b) # True

短路求值

1
2
3
4
5
6
7
8
9
10
# and 短路:第一个为 False 时不再计算第二个
print(False and print("不会执行")) # False

# or 短路:第一个为 True 时不再计算第二个
print(True or print("不会执行")) # True

# 实际应用:默认值设置
name = ""
result = name or "匿名用户"
print(result) # 匿名用户

3.4 赋值运算符

赋值运算符用于给变量赋值。

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
x = 10

# 基本赋值
x = 5

# 加法赋值
x += 3 # 等价于 x = x + 3
print(x) # 8

# 减法赋值
x -= 2 # 等价于 x = x - 2
print(x) # 6

# 乘法赋值
x *= 2 # 等价于 x = x * 2
print(x) # 12

# 除法赋值
x /= 4 # 等价于 x = x / 4
print(x) # 3.0

# 整除赋值
x //= 2 # 等价于 x = x // 2
print(x) # 1.0

# 取余赋值
x %= 3 # 等价于 x = x % 3
print(x) # 1.0

# 幂赋值
x **= 10 # 等价于 x = x ** 10
print(x) # 1.0

3.5 位运算符

位运算符直接对整数的二进制位进行操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
a = 60   # 0011 1100
b = 13 # 0000 1101

# 按位与(AND)
print(a & b) # 12 (0000 1100)

# 按位或(OR)
print(a | b) # 61 (0011 1101)

# 按位异或(XOR)
print(a ^ b) # 49 (0011 0001)

# 按位取反(NOT)
print(~a) # -61

# 左移
print(a << 2) # 240 (1111 0000)

# 右移
print(a >> 2) # 15 (0000 1111)

3.6 成员运算符与身份运算符

成员运算符

1
2
3
4
5
6
7
8
fruits = ["apple", "banana", "orange"]

# in - 检查是否存在
print("apple" in fruits) # True
print("grape" in fruits) # False

# not in - 检查是否不存在
print("grape" not in fruits) # True

身份运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a = [1, 2, 3]
b = [1, 2, 3]
c = a

# is - 检查是否是同一个对象
print(a is b) # False(不同对象)
print(a is c) # True(同一对象)

# is not - 检查是否不是同一个对象
print(a is not b) # True
print(a is not c) # False

# 注意:is 与 == 的区别
print(a == b) # True(值相等)
print(a is b) # False(不是同一对象)

3.7 运算符优先级

运算符优先级从高到低排列:

优先级 运算符 说明
最高 ** 幂运算
~ + - 按位取反、正负号
* / % // 乘、除、取余、整除
+ - 加、减
<< >> 位移
& 按位与
^ 按位异或
| 按位或
== != > < >= <= 比较
not 逻辑非
and 逻辑与
最低 or 逻辑或

使用括号明确优先级

1
2
3
4
5
6
7
8
# 不推荐:依赖默认优先级
result = 10 + 5 * 2 ** 3 # 50

# 推荐:使用括号提高可读性
result = 10 + (5 * (2 ** 3)) # 50

# 复杂表达式务必加括号
score = (math_score * 0.4) + (english_score * 0.3) + (science_score * 0.3)

3.8 本章小结

  • 算术运算符:+ - * / // % **
  • 比较运算符返回布尔值,支持链式比较
  • 逻辑运算符:and or not,具有短路特性
  • 赋值运算符可简化代码:+= -=
  • is 检查身份(同一对象),== 检查值相等
  • 使用括号明确运算优先级

练习题

  1. 计算圆的面积(半径为 5,π 取 3.14159)
  2. 判断一个数是否同时能被 3 和 5 整除
  3. 使用位运算实现:判断一个数是奇数还是偶数
  4. 以下代码输出什么?
    1
    2
    3
    x = 10
    y = 20
    print(x == y, x != y, x < y, x >= y)
ByteFisher
分享编程技术 · 记录钓鱼乐趣
扫码关注
▸ 扫码关注 ◂
分享: