- 掌握比较运算符与逻辑运算符
and / or / not,理解短路。 - 理解运算符优先级,并掌握 f-string 基础。
二、学习路线
三、知识点讲解
1. 算术运算符 - + - * 加减乘都直观;/ 是真除法,结果永远是 float(如 10 / 3 = 3.333...)。 - // 是整除(向下取整):10 // 3 = 3。 - % 是取余(求余数):10 % 3 = 1,常用于判断奇偶(n % 2 == 0 为偶)。 - ** 是幂:10 ** 3 = 1000。
2. 比较运算符 - > >= < <= == !=,结果都是 bool。注意「相等」是两个等号 ==,一个等号 = 是赋值。
3. 逻辑运算符与短路 - and:两边都真才真;or:有一边真就真;not:取反。 - 短路:A and B 中若 A 为假,整体已注定为假,B 不会被求值;A or B 中若 A 为真,B 也不会被求值。这能避免无谓计算或报错。
4. 成员与身份 - in:判断元素是否在某容器里(2 in [1,2,3] 为 True)。 - is:判断「是不是同一个对象」(比身份,不是比值)。小整数和短字符串有缓存,初学比较内容用 == 即可。
5. 赋值与复合赋值 - c = 0; c += 5 等价于 c = c + 5;同理有 -=、*=、/=、%= 等。
6. 运算符优先级 - 指数 ** 最高,然后乘除 *///%,然后加减。括号 () 可强行改变顺序,建议不确定时就加括号。
7. f-string 基础 - 在字符串前加 f,用 {变量或表达式} 把值嵌进去:f"{name} 的分数是 {score}"。还可控制格式,如 {val:.1f} 保留一位小数。
四、实例代码
对应文件:day03_operators.py
# Day03: 运算符与表达式# 知识点:算术、比较、逻辑(短路)、成员 in、身份 is、# 赋值与复合赋值、运算符优先级、f-string 基础。# 1) 算术运算符a, b = 10, 3print("加法 a + b =", a + b)print("减法 a - b =", a - b)print("乘法 a * b =", a * b)print("真除法 a / b =", a / b) # 结果永远是 floatprint("整除 a // b =", a // b) # 向下取整print("取余 a % b =", a % b) # 求余数print("幂 a ** b =", a ** b) # 10 的 3 次方# 2) 比较运算符 -> 返回 boolprint("a > b ?", a > b)print("a == b ?", a == b)print("a != b ?", a != b)# 3) 逻辑运算符 and / or / not(注意短路行为)print("True and False =", True and False)print("True or False =", True or False)print("not True =", not True)# 短路演示:and 左边为 False 时,右边【不会】被求值def expensive(): print("expensive 被调用了!") return Trueprint("短路演示:", False and expensive()) # expensive 不会被调用,无打印# 4) 成员运算符 in:判断元素是否在某容器中nums = [1, 2, 3]print("2 在 nums 中吗?", 2 in nums)print("5 在 nums 中吗?", 5 in nums)# 5) 身份运算符 is:比较「是不是同一个对象」(不是比值)x = [1, 2]y = [1, 2]print("x == y (值相等)?", x == y) # True:内容一样print("x is y (同一对象)?", x is y) # False:两个不同的列表对象# 6) 赋值与复合赋值c = 0c += 5 # 等价于 c = c + 5print("c += 5 ->", c)c *= 2 # 等价于 c = c * 2print("c *= 2 ->", c)# 7) 运算符优先级:先乘除后加减,括号可改变顺序val = 2 + 3 * 4print("2 + 3 * 4 =", val)val2 = (2 + 3) * 4print("(2 + 3) * 4 =", val2)# 8) f-string 基础:在字符串前加 f,用 {变量} 嵌入值title = "小明"score = 95print(f"{title} 的分数是 {score} 分")print(f"上面算式的结果是 {val},保留一位小数约为 {val:.1f}")
五、调试注意事项
- 混淆
= 与 ==:条件判断里写 if x = 5: 会报 SyntaxError,应为 ==。 - 整除
// 对负数会「向下取整」,如 -7 // 2 = -4,与直觉不同,需要时自己留意。 - 想看短路效果,把
expensive() 换成会报错的表达式放在 or 右侧真值前,验证它不被执行。
六、运行结果提示
加法 a + b = 13减法 a - b = 7乘法 a * b = 30真除法 a / b = 3.3333333333333335整除 a // b = 3取余 a % b = 1幂 a ** b = 1000a > b ? Truea == b ? Falsea != b ? TrueTrue and False = FalseTrue or False = Truenot True = False短路演示: False2 在 nums 中吗? True5 在 nums 中吗? Falsex == y (值相等)? Truex is y (同一对象)? Falsec += 5 -> 5c *= 2 -> 102 + 3 * 4 = 14(2 + 3) * 4 = 20小明 的分数是 95 分上面算式的结果是 14,保留一位小数约为 14.0
七、常见错误与避坑
- 用
^ 当幂运算:Python 里 ^ 是「按位异或」,2 ** 3 才是 8。 is 误用于值比较:多数情况用 ==;is 只用于和 None 比较(x is None)。