运算符与表达式
Python 支持丰富的运算符,用于执行各种数学、逻辑和比较操作。
1. 算术运算符 (Arithmetic)
| 运算符 | 描述 | 示例 a=10, b=3 |
结果 |
|---|---|---|---|
+ |
加法 | a + b |
13 |
- |
减法 | a - b |
7 |
* |
乘法 | a * b |
30 |
/ |
除法 (真除法) | a / b |
3.333... |
// |
整除 (地板除) | a // b |
3 |
% |
取模 (余数) | a % b |
1 |
** |
幂运算 | a ** b |
1000 |
注意
Python 3 中 / 总是返回浮点数,即使能整除 (如 4/2 -> 2.0)。如果需要整数请使用 //。
2. 比较运算符 (Comparison)
比较结果总是返回布尔值 True 或 False。
| 运算符 | 描述 |
|---|---|
== |
等于 (注意是两个等号) |
!= |
不等于 |
> / < |
大于 / 小于 |
>= / <= |
大于等于 / 小于等于 |
链式比较
Python 支持数学中常见的链式写法:
x = 5
if 0 < x < 10: # 等价于 0 < x and x < 10
print("x 在 0 到 10 之间")
3. 逻辑运算符 (Logical)
用于组合布尔条件。
| 运算符 | 描述 | 短路逻辑 |
|---|---|---|
and |
与 (两个都为真) | 如果第一个为假,不计算第二个 |
or |
或 (只要一个为真) | 如果第一个为真,不计算第二个 |
not |
非 (取反) | - |
age = 25
is_student = False
if age > 18 and not is_student:
print("成年非学生")
4. 赋值运算符 (Assignment)
| 运算符 | 示例 | 等价于 |
|---|---|---|
= |
x = 5 |
- |
+= |
x += 3 |
x = x + 3 |
-= |
x -= 3 |
x = x - 3 |
*= |
x *= 3 |
x = x * 3 |
/= |
x /= 3 |
x = x / 3 |
Python 不支持自增/自减
Python 中没有 x++ 或 x-- 运算符。请使用 x += 1 或 x -= 1。
5. 成员运算符 (Membership)
用于检查序列(列表、元组、字符串、字典键)中是否存在某值。
| 运算符 | 描述 |
|---|---|
in |
存在于 |
not in |
不存在于 |
nums = [1, 2, 3]
print(1 in nums) # True
print(5 not in nums) # True
print("a" in "apple") # True
6. 身份运算符 (Identity)
用于比较两个对象的内存地址是否相同(是否是同一个对象)。
| 运算符 | 描述 |
|---|---|
is |
是同一个对象 (内存地址相同) |
is not |
不是同一个对象 |
is vs ==
==: 比较值是否相等 (Value Equality)is: 比较引用是否相同 (Reference Equality)
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a == b) # True (内容一样)
print(a is b) # False (是两个独立的列表对象)
print(a is c) # True (c 指向 a)
# 对 None 的判断应该始终使用 is
x = None
if x is None:
pass
7. 运算符优先级
从高到低排列(部分):
()(括号最优先)**(幂)*,/,//,%(乘除)+,-(加减)==,!=,>,<(比较)notandor
建议
记不住优先级没关系,尽量使用括号 () 来明确运算顺序,这也能增加代码可读性。
# 哪个先算?不确定就加括号
result = (a + b) * c > d and not e
本章小结
| 类型 | 关键词 |
|---|---|
| 算术 | + - * / // % ** |
| 比较 | == != > < >= <= |
| 逻辑 | and or not |
| 成员 | in, not in |
| 身份 | is, is not |
练习题
- 计算器:编写代码,计算
100除以3的商(整数)和余数。 - 逻辑判断:给定年份
year,判断是否是闰年。(闰年条件:能被 4 整除且不能被 100 整除,或者能被 400 整除)。 - 列表检查:有一个黑名单列表
blacklist = ["bad_user", "spammer"],输入一个用户名,如果不在黑名单中,打印 "Access Granted",否则打印 "Access Denied"。
下一章:程序控制流