Python3 运算符

Python3 运算符


🎯 学习目标

掌握 Python 中各类运算符的使用方法,包括算术运算符、比较运算符、逻辑运算符、位运算符等,并能在实际项目中灵活运用。理解运算符优先级与结合性,以及其在代码逻辑控制中的作用。


🔑 核心重点

分类 内容
算术运算符 +, -, *, /, //, %, **
比较运算符 ==, !=, >, <, >=, <=
逻辑运算符 and, or, not
赋值运算符 =, +=, -=, *=, /=, //=, %=, **=
成员运算符 in, not in
身份运算符 is, is not
位运算符 &, `
运算符优先级 掌握常见运算符优先级顺序,避免歧义
实际应用场景 条件判断、数据处理、循环控制、算法实现等

📚 详细讲解

一、什么是运算符?

运算符是用于对一个或多个操作数进行操作的符号。Python 支持丰富的运算符类型,适用于各种数据类型的运算。

示例:

a = 10
b = 3

# 算术运算
print(a + b)  # 输出:13
print(a ** b)  # 输出:1000(10 的 3 次方)

# 比较运算
print(a > b)  # 输出:True

# 逻辑运算
print(a > 5 and b < 5)  # 输出:True

二、算术运算符

运算符 描述 示例 结果
+ 加法 2 + 3 5
- 减法 5 - 2 3
* 乘法 4 * 3 12
/ 除法(浮点) 7 / 2 3.5
// 整除 7 // 2 3
% 取余 7 % 2 1
** 幂运算 2 ** 3 8

📌 注意

  • 使用 / 总是返回浮点数。
  • //% 在负数情况下行为不同(需注意取整方向)。

三、比较运算符

运算符 描述 示例 结果
== 等于 5 == 5 True
!= 不等于 5 != 3 True
> 大于 6 > 4 True
< 小于 3 < 5 True
>= 大于等于 5 >= 5 True
<= 小于等于 4 <= 6 True

📌 特点

  • 可以比较数字、字符串、列表等任意可比较对象。
  • 字符串比较按 Unicode 值逐字符比较。

四、逻辑运算符

运算符 描述 示例 结果
and True and False False
or True or False True
not not True False

📌 短路特性

  • and 若第一个为假,直接返回第一个值。
  • or 若第一个为真,直接返回第一个值。

五、赋值运算符

运算符 描述 示例 等价表达式
= 简单赋值 a = 5 a = 5
+= 加法赋值 a += 3 a = a + 3
-= 减法赋值 a -= 2 a = a - 2
*= 乘法赋值 a *= 4 a = a * 4
/= 除法赋值 a /= 2 a = a / 2
//= 整除赋值 a //= 3 a = a // 3
%= 取余赋值 a %= 5 a = a % 5
**= 幂赋值 a **= 2 a = a ** 2

六、成员运算符

运算符 描述 示例 结果
in 是否存在 'a' in 'abc' True
not in 是否不存在 'd' not in 'abc' True

📌 适用场景

  • 判断某个元素是否存在于字符串、列表、元组、字典等中。

七、身份运算符

运算符 描述 示例 结果
is 是否同一对象 a = [1, 2]; b = a; a is b True
is not 是否非同一对象 a = [1, 2]; b = [1, 2]; a is not b True

📌 区别 ==is

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

八、位运算符

运算符 描述 示例 说明
& 按位与 5 & 31 二进制:0101 & 0011 = 0001
` ` 按位或 `5
^ 异或 5 ^ 36 二进制:0101 ^ 0011 = 0110
~ 取反 ~5-6 补码表示
<< 左移 5 << 110 二进制左移一位
>> 右移 5 >> 12 二进制右移一位

📌 应用

  • 底层系统编程、网络协议解析、权限位掩码等。

九、运算符优先级与结合性

运算符优先级(从高到低)
()(括号)
**(幂)
~, +, -(一元)
*, /, //, %
+, -(二元)
<<, >>
&
^
`
==, !=, >, <
is, is not
in, not in
not
and
or

📌 建议

  • 使用括号提高代码可读性,避免因优先级错误导致逻辑问题。

⚠️ 注意事项

  • 不要混淆 ==is:前者比较值,后者比较对象身份。
  • 避免多重复杂运算在同一行:影响可读性。
  • 合理使用括号提升优先级可读性:即使不改变结果,也应增强可读性。
  • 注意布尔值的隐式转换:如 0, None, [] 等在 if 中视为 False
  • 位运算符通常用于底层开发:普通业务逻辑中较少使用。

🧪 实际案例分析

📌 场景:判断用户输入是否为合法年份

year = input("请输入年份:")

if year.isdigit():
    year = int(year)
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        print(f"{year} 是闰年")
    else:
        print(f"{year} 不是闰年")
else:
    print("请输入有效的数字年份!")

📌 分析

  • 使用了 ==, !=, or, and 等运算符判断条件。
  • 使用 isdigit() 成员运算符判断输入是否为数字字符串。
  • 使用 int() 类型转换确保后续运算正确。

🧩 拓展练习(动手实践)

  1. 编写一个程序,计算某人的 BMI(体重指数),并根据结果输出“偏瘦”、“正常”、“超重”或“肥胖”。
  2. 输入两个日期(年月日),计算相差天数(可用 datetime 模块)。
  3. 编写一个函数,接收一个整数 n,返回所有小于 n 的偶数(用位运算判断奇偶)。
  4. 使用位运算实现两个变量交换数值,不使用中间变量。
  5. 使用逻辑运算符优化以下代码逻辑:
if age >= 18 and gender == "male":
    print("成年男性")
elif age >= 18 and gender == "female":
    print("成年女性")
else:
    print("未成年")

📚 推荐阅读


🧭 下一步建议

  • 下一章学习内容:《Python 控制流语句》
  • 学习使用 if, for, while 构建程序逻辑流程
  • 探索嵌套结构与代码缩进规范
  • 掌握断言、异常处理机制
  • 练习编写完整的交互式小程序

如果你希望我为你提供:

  • Python 运算符优先级表 PDF
  • PyCharm 快速调试技巧(查看变量值、条件断点)
  • 更多实战练习题(如计算器、BMI 分析器、猜数字游戏等)

欢迎随时告诉我 😊

posted @ 2025-05-28 00:00  红尘过客2022  阅读(36)  评论(0)    收藏  举报