跳到主要内容

运算符与表达式

掌握Python中的各种运算操作

运算符概述

运算符 是用于执行操作的特殊符号,表达式 是由运算符和操作数组成的计算式。

# 表达式示例
result = 2 + 3 * 4
# └─┬─┘
# 这就是表达式
# 2, 3, 4 是操作数
# +, * 是运算符

算术运算符

基本运算

a = 10
b = 3

# 加法
print(a + b) # 13

# 减法
print(a - b) # 7

# 乘法
print(a * b) # 30

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

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

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

# 幂运算
print(a ** b) # 1000(10的3次方)
print(2 ** 10) # 1024

运算顺序

# 运算优先级(从高到低)
# ** 幂运算
# * / // % 乘除取余
# + - 加减

print(2 + 3 * 4) # 14(先乘后加)
print((2 + 3) * 4) # 20(括号优先)
print(2 ** 3 ** 2) # 512(幂运算右结合:2^9)

比较运算符

a = 10
b = 5

# 等于
print(a == b) # False

# 不等于
print(a != b) # True

# 大于
print(a > b) # True

# 小于
print(a < b) # False

# 大于等于
print(a >= b) # True

# 小于等于
print(a <= b) # False

# 链式比较(Python特有)
x = 5
print(1 < x < 10) # True(等于 1 < x and x < 10)
print(1 < x < 3) # False

字符串比较

# 按字典序(ASCII码)比较
print("apple" < "banana") # True
print("A" < "a") # True(大写字母ASCII小)
print("abc" == "abc") # True

逻辑运算符

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

逻辑运算真值表

and 运算:
True and True = True
True and False = False
False and True = False
False and False = False

or 运算:
True or True = True
True or False = True
False or True = True
False or False = False

not 运算:
not True = False
not False = True

短路求值

# and:第一个False就返回,不再计算后面的
print(False and print("不会执行"))

# or:第一个True就返回,不再计算后面的
print(True or print("不会执行"))

# 实际应用
name = ""
default_name = name or "匿名用户" # name为空时用默认值
print(default_name) # 匿名用户

赋值运算符

基本赋值

x = 10  # 赋值

复合赋值

x = 10

x += 5 # 等于 x = x + 5,结果15
x -= 3 # 等于 x = x - 3,结果12
x *= 2 # 等于 x = x * 2,结果24
x /= 4 # 等于 x = x / 4,结果6.0
x //= 2 # 等于 x = x // 2,结果3.0
x %= 2 # 等于 x = x % 2,结果1.0
x **= 3 # 等于 x = x ** 3,结果1.0

多重赋值

# 同时赋值
a, b, c = 1, 2, 3

# 交换值
a, b = b, a

# 解包赋值
x, y, z = [1, 2, 3]

成员运算符

# in:判断是否在序列中
print('a' in 'apple') # True
print(3 in [1, 2, 3]) # True
print('key' in {'key': 1}) # True(检查字典的键)

# not in:判断是否不在序列中
print('b' not in 'apple') # True
print(4 not in [1, 2, 3]) # True

身份运算符

# is:判断是否是同一个对象
# == 判断值是否相等
# is 判断是否是同一个对象(内存地址相同)

a = [1, 2, 3]
b = [1, 2, 3]
c = a

print(a == b) # True(值相等)
print(a is b) # False(不是同一对象)
print(a is c) # True(是同一对象)

# 常用于判断None
x = None
print(x is None) # True(推荐)
print(x == None) # True(不推荐)

位运算符

a = 60   # 二进制:0011 1100
b = 13 # 二进制:0000 1101

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

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

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

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

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

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

运算符优先级

优先级从高到低:

1. ** 幂运算
2. ~ + - 一元运算符(取反、正负号)
3. * / % // 乘除取余整除
4. + - 加减
5. >> << 位移
6. & 按位与
7. ^ | 按位异或、或
8. <= < > >= 比较
9. == != 等于、不等于
10. = %= /= //= -= += *= **= 赋值
11. is is not 身份
12. in not in 成员
13. not 逻辑非
14. and 逻辑与
15. or 逻辑或

建议:使用括号明确优先级,增加可读性

# 不明确
result = 2 + 3 * 4 > 10 and 5 < 6

# 明确(推荐)
result = ((2 + (3 * 4)) > 10) and (5 < 6)

三元表达式

# 语法:值1 if 条件 else 值2
# 条件为True返回值1,否则返回值2

age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 成年

# 等价于
if age >= 18:
status = "成年"
else:
status = "未成年"

# 嵌套三元表达式(不推荐,可读性差)
score = 85
grade = "A" if score >= 90 else "B" if score >= 80 else "C"

海象运算符 :=

# Python 3.8+ 引入
# 在表达式中赋值

# 传统写法
data = input("请输入:")
if len(data) > 5:
print(f"输入了{len(data)}个字符")

# 使用海象运算符
if (n := len(input("请输入:"))) > 5:
print(f"输入了{n}个字符")

# 在循环中使用
while (line := input("请输入(quit退出):")) != "quit":
print(f"你输入了:{line}")

常见表达式模式

判断奇偶

num = 7
if num % 2 == 0:
print("偶数")
else:
print("奇数")

判断范围

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

默认值

# 使用or提供默认值
name = input("请输入名字:") or "匿名"
print(f"你好,{name}")

取绝对值

x = -5
abs_x = x if x >= 0 else -x
# 或使用内置函数
abs_x = abs(x)

交换两数

a, b = 5, 10
a, b = b, a # Python特有的优雅写法

练习

练习1:计算表达式

# 计算以下表达式的值
print(2 + 3 * 4) # ?
print((2 + 3) * 4) # ?
print(2 ** 3 ** 2) # ?
print(10 // 3) # ?
print(10 % 3) # ?

# 答案
# 14, 20, 512, 3, 1

练习2:逻辑判断

# 判断一个数是否在10到20之间(含边界)
num = 15

# 写出条件表达式
# 参考答案
print(10 <= num <= 20) # True

练习3:成绩等级

# 根据分数输出等级
# 90-100: A, 80-89: B, 70-79: C, 60-69: D, <60: F
score = 85

# 使用三元表达式
# 参考答案
grade = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "D" if score >= 60 else "F"
print(grade) # B

本章小结

  1. 算术运算符:+ - * / // % **
  2. 比较运算符:== != > < >= <=
  3. 逻辑运算符:and or not
  4. 赋值运算符:= += -= *= /=
  5. 成员运算符:in, not in
  6. 三元表达式:值1 if 条件 else 值2
  7. 优先级:使用括号明确优先级

下一步

学会了运算符,下一章学习条件语句控制程序流程。

→ 继续阅读:16-条件语句详解