运算符与表达式
掌握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
本章小结
- 算术运算符:+
-*///%** - 比较运算符:==
!=><>=<= - 逻辑运算符:and or not
- 赋值运算符:=
+=-=*=/=等 - 成员运算符:in, not in
- 三元表达式:值1 if 条件 else 值2
- 优先级:使用括号明确优先级
下一步
学会了运算符,下一章学习条件语句控制程序流程。
→ 继续阅读:16-条件语句详解