跳到主要内容

Python 运算符

运算符是Python中最基础、最常用的组成部分之一,它们允许我们执行各种计算和操作。从简单的数学计算到复杂的逻辑判断,运算符在编程中无处不在。本教程将全面介绍Python中的各种运算符,帮助你掌握这一基础知识。

什么是运算符?

运算符是执行特定操作并返回结果的特殊符号。例如,加号(+)是一个运算符,它将两个数相加。运算符可以操作不同类型的数据,如数字、字符串、列表等。

Python 中的运算符类型

Python提供了多种类型的运算符,我们将逐一介绍:

1. 算术运算符

算术运算符用于执行基本的数学运算。

运算符描述示例
+加法a + b
-减法a - b
*乘法a * b
/除法a / b
%取模(返回除法的余数)a % b
**幂运算a ** b
//整除(返回商的整数部分)a // b

让我们通过代码示例来理解这些运算符:

python
# 基本算术运算符
a = 10
b = 3

print(f"加法: {a} + {b} = {a + b}") # 输出: 加法: 10 + 3 = 13
print(f"减法: {a} - {b} = {a - b}") # 输出: 减法: 10 - 3 = 7
print(f"乘法: {a} * {b} = {a * b}") # 输出: 乘法: 10 * 3 = 30
print(f"除法: {a} / {b} = {a / b}") # 输出: 除法: 10 / 3 = 3.3333333333333335
print(f"取模: {a} % {b} = {a % b}") # 输出: 取模: 10 % 3 = 1
print(f"幂运算: {a} ** {b} = {a ** b}") # 输出: 幂运算: 10 ** 3 = 1000
print(f"整除: {a} // {b} = {a // b}") # 输出: 整除: 10 // 3 = 3
提示

整除(//)运算符在处理大数据或需要向下取整的情况下非常有用。与常规除法不同,它总是返回一个整数。

2. 比较运算符

比较运算符用于比较两个值,并返回一个布尔值(TrueFalse)。

运算符描述示例
==等于a == b
!=不等于a != b
>大于a > b
<小于a < b
>=大于或等于a >= b
<=小于或等于a <= b

代码示例:

python
# 比较运算符
a = 10
b = 5

print(f"{a} == {b} 的结果是: {a == b}") # 输出: 10 == 5 的结果是: False
print(f"{a} != {b} 的结果是: {a != b}") # 输出: 10 != 5 的结果是: True
print(f"{a} > {b} 的结果是: {a > b}") # 输出: 10 > 5 的结果是: True
print(f"{a} < {b} 的结果是: {a < b}") # 输出: 10 < 5 的结果是: False
print(f"{a} >= {b} 的结果是: {a >= b}") # 输出: 10 >= 5 的结果是: True
print(f"{a} <= {b} 的结果是: {a <= b}") # 输出: 10 <= 5 的结果是: False

3. 逻辑运算符

逻辑运算符用于组合条件语句。

运算符描述示例
and如果两个操作数都为True,则返回Truea and b
or如果任一操作数为True,则返回Truea or b
not反转操作数的逻辑状态not a

代码示例:

python
# 逻辑运算符
x = True
y = False

print(f"{x} and {y} 的结果是: {x and y}") # 输出: True and False 的结果是: False
print(f"{x} or {y} 的结果是: {x or y}") # 输出: True or False 的结果是: True
print(f"not {x} 的结果是: {not x}") # 输出: not True 的结果是: False
print(f"not {y} 的结果是: {not y}") # 输出: not False 的结果是: True
短路求值

Python中的逻辑运算符使用"短路求值"。这意味着,如果第一个操作数已经足够确定最终结果,Python不会评估第二个操作数。例如,在False and X中,无论X是什么,结果都是False,因此Python不会评估X。

4. 赋值运算符

赋值运算符用于为变量赋值。

运算符描述示例
=简单赋值a = b
+=加法赋值a += b 等同于 a = a + b
-=减法赋值a -= b 等同于 a = a - b
*=乘法赋值a *= b 等同于 a = a * b
/=除法赋值a /= b 等同于 a = a / b
%=取模赋值a %= b 等同于 a = a % b
**=幂赋值a **= b 等同于 a = a ** b
//=整除赋值a //= b 等同于 a = a // b

代码示例:

python
# 赋值运算符
a = 10

# 增加5
a += 5
print(f"a += 5 后的结果是: {a}") # 输出: a += 5 后的结果是: 15

# 减去3
a -= 3
print(f"a -= 3 后的结果是: {a}") # 输出: a -= 3 后的结果是: 12

# 乘以2
a *= 2
print(f"a *= 2 后的结果是: {a}") # 输出: a *= 2 后的结果是: 24

# 除以4
a /= 4
print(f"a /= 4 后的结果是: {a}") # 输出: a /= 4 后的结果是: 6.0

5. 位运算符

位运算符作用于整数的二进制表示。

运算符描述示例
&按位与a & b
|按位或a | b
^按位异或a ^ b
~按位非/取反~a
<<左移a << n
>>右移a >> n

代码示例:

python
# 位运算符
a = 60 # 60 = 0011 1100 (二进制)
b = 13 # 13 = 0000 1101 (二进制)

print(f"a & b = {a & b}") # 输出: a & b = 12 (0000 1100)
print(f"a | b = {a | b}") # 输出: a | b = 61 (0011 1101)
print(f"a ^ b = {a ^ b}") # 输出: a ^ b = 49 (0011 0001)
print(f"~a = {~a}") # 输出: ~a = -61 (1100 0011,取负数形式)
print(f"a << 2 = {a << 2}") # 输出: a << 2 = 240 (1111 0000)
print(f"a >> 2 = {a >> 2}") # 输出: a >> 2 = 15 (0000 1111)
注意

位运算符主要用于需要直接操作二进制位的高级应用,如密码学、图像处理等。对于大多数日常编程任务,你可能不会频繁使用它们。

6. 成员运算符

成员运算符用于测试序列是否包含特定值。

运算符描述示例
in如果在指定序列中找到值,则返回Truea in b
not in如果在指定序列中未找到值,则返回Truea not in b

代码示例:

python
# 成员运算符
fruits = ["apple", "banana", "cherry"]

print(f"'banana' in fruits: {'banana' in fruits}") # 输出: 'banana' in fruits: True
print(f"'orange' in fruits: {'orange' in fruits}") # 输出: 'orange' in fruits: False
print(f"'orange' not in fruits: {'orange' not in fruits}") # 输出: 'orange' not in fruits: True

# 字符串也是序列
word = "Python"
print(f"'P' in word: {'P' in word}") # 输出: 'P' in word: True
print(f"'z' in word: {'z' in word}") # 输出: 'z' in word: False

7. 身份运算符

身份运算符用于比较对象的内存地址。

运算符描述示例
is如果两个变量引用同一对象,则返回Truea is b
is not如果两个变量引用不同对象,则返回Truea is not b

代码示例:

python
# 身份运算符
a = [1, 2, 3]
b = [1, 2, 3]
c = a

print(f"a is b: {a is b}") # 输出: a is b: False (a和b是不同的对象,尽管它们的内容相同)
print(f"a is c: {a is c}") # 输出: a is c: True (c是a的引用)
print(f"a == b: {a == b}") # 输出: a == b: True (a和b的内容相同)
print(f"a is not b: {a is not b}") # 输出: a is not b: True
重要

不要混淆==is运算符。==比较两个对象的值是否相等,而is检查它们是否是同一个对象(相同的内存地址)。

运算符优先级

当表达式中包含多个运算符时,Python按照特定的优先级规则执行操作。以下是Python运算符的优先级(从高到低):

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

代码示例:

python
# 运算符优先级
result = 2 + 3 * 4
print(f"2 + 3 * 4 = {result}") # 输出: 2 + 3 * 4 = 14 (乘法优先级高于加法)

# 使用括号可以改变优先级
result = (2 + 3) * 4
print(f"(2 + 3) * 4 = {result}") # 输出: (2 + 3) * 4 = 20

实际应用案例

案例1:简单计算器

python
# 简单计算器
def calculator():
print("简单计算器")
print("支持的操作: +, -, *, /")

num1 = float(input("输入第一个数字: "))
operator = input("输入运算符 (+, -, *, /): ")
num2 = float(input("输入第二个数字: "))

if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
if num2 == 0:
return "错误:除数不能为零"
result = num1 / num2
else:
return "不支持的运算符"

return f"{num1} {operator} {num2} = {result}"

# 调用函数
print(calculator())

案例2:成绩判断

python
# 成绩判断系统
def grade_evaluator():
score = float(input("请输入你的分数 (0-100): "))

if score >= 90 and score <= 100:
grade = "A"
message = "优秀!继续保持!"
elif score >= 80 and score < 90:
grade = "B"
message = "很好!还有提升空间。"
elif score >= 70 and score < 80:
grade = "C"
message = "良好。需要更加努力。"
elif score >= 60 and score < 70:
grade = "D"
message = "及格。需要加倍努力。"
elif score >= 0 and score < 60:
grade = "F"
message = "不及格。建议复习并重考。"
else:
return "分数无效!必须在0-100范围内。"

return f"你的成绩是: {grade}\n{message}"

# 调用函数
print(grade_evaluator())

案例3:数据过滤

python
# 数据过滤
def filter_data():
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用比较和逻辑运算符过滤数据
even_numbers = [num for num in numbers if num % 2 == 0]
odd_numbers = [num for num in numbers if num % 2 != 0]

# 使用算术和比较运算符找出大于平均值的数字
average = sum(numbers) / len(numbers)
above_average = [num for num in numbers if num > average]

return (f"原始数据: {numbers}\n"
f"偶数: {even_numbers}\n"
f"奇数: {odd_numbers}\n"
f"平均值: {average}\n"
f"高于平均值的数字: {above_average}")

# 调用函数
print(filter_data())

总结

运算符是Python编程的基础构建块之一,它们使我们能够执行各种操作,从简单的数学计算到复杂的逻辑判断。本教程涵盖了Python中的主要运算符类型:

  • 算术运算符:执行数学计算
  • 比较运算符:比较值并返回布尔结果
  • 逻辑运算符:组合条件表达式
  • 赋值运算符:为变量赋值
  • 位运算符:操作二进制位
  • 成员运算符:检查序列成员资格
  • 身份运算符:比较对象标识

了解这些运算符及其优先级对于编写高效且无错误的代码至关重要。随着你编程经验的增长,你会发现这些运算符在各种场景中的强大应用。

练习

为了巩固你的知识,尝试以下练习:

  1. 编写一个程序,计算圆的面积和周长(提示:使用3.14math.pi作为π值)。
  2. 创建一个简单的温度转换器,可以在摄氏度和华氏度之间转换。
  3. 编写一个程序,检查输入的年份是否为闰年(提示:闰年可以被4整除,但如果能被100整除,则还必须能被400整除)。
  4. 创建一个购物清单管理器,允许用户添加、删除和查看商品。

附加资源

Happy coding!