第6集 算术运算符

1. 算术运算符概述

Python提供了7种算术运算符,用于执行数学运算:

运算符 名称 示例 说明
+ 加法 a + b 两个数相加
- 减法 a - b 两个数相减
* 乘法 a * b 两个数相乘
/ 除法 a / b 两个数相除(结果为浮点数)
// 整除 a // b 两个数相除(结果为整数,向下取整)
% 取余 a % b 两个数相除的余数
** 幂运算 a ** b a的b次方

2. 基本算术运算符

2.1 加法运算符(+)

# 整数加法
a = 10
b = 20
result = a + b
print(f"{a} + {b} = {result}")  # 输出:10 + 20 = 30

# 浮点数加法
x = 3.14
y = 2.86
result = x + y
print(f"{x} + {y} = {result}")  # 输出:3.14 + 2.86 = 6.0

# 整数和浮点数相加(结果为浮点数)
result = a + x
print(f"{a} + {x} = {result}")  # 输出:10 + 3.14 = 13.14

# 字符串连接(+号也可以用于字符串)
str1 = "Hello"
str2 = "World"
result = str1 + " " + str2
print(result)  # 输出:Hello World

2.2 减法运算符(-)

# 整数减法
a = 20
b = 10
result = a - b
print(f"{a} - {b} = {result}")  # 输出:20 - 10 = 10

# 浮点数减法
x = 5.5
y = 3.2
result = x - y
print(f"{x} - {y} = {result}")  # 输出:5.5 - 3.2 = 2.3

# 负数
num = 10
result = -num
print(f"-{num} = {result}")  # 输出:-10

2.3 乘法运算符(*)

# 整数乘法
a = 5
b = 6
result = a * b
print(f"{a} × {b} = {result}")  # 输出:5 × 6 = 30

# 浮点数乘法
x = 2.5
y = 4.0
result = x * y
print(f"{x} × {y} = {result}")  # 输出:2.5 × 4.0 = 10.0

# 字符串重复(*号也可以用于字符串)
stars = "*" * 10
print(stars)  # 输出:**********

# 列表重复
numbers = [1, 2] * 3
print(numbers)  # 输出:[1, 2, 1, 2, 1, 2]

3. 除法运算符

3.1 普通除法(/)

# 普通除法(结果总是浮点数)
a = 10
b = 4
result = a / b
print(f"{a} ÷ {b} = {result}")  # 输出:10 ÷ 4 = 2.5

# 整数除法结果也是浮点数
result = 8 / 2
print(f"8 ÷ 2 = {result}")  # 输出:8 ÷ 2 = 4.0

# 浮点数除法
x = 7.5
y = 2.5
result = x / y
print(f"{x} ÷ {y} = {result}")  # 输出:7.5 ÷ 2.5 = 3.0

3.2 整除运算符(//)

整除运算符执行除法后向下取整,返回整数。

# 正数整除
print(f"10 // 3 = {10 // 3}")  # 输出:3(10 ÷ 3 ≈ 3.333,向下取整为3)
print(f"9 // 3 = {9 // 3}")    # 输出:3
print(f"10 // 5 = {10 // 5}")  # 输出:2

# 负数整除(注意负数整除的特点)
print(f"-10 // 3 = {-10 // 3}")  # 输出:-4(-10 ÷ 3 ≈ -3.333,向下取整为-4)
print(f"10 // -3 = {10 // -3}")  # 输出:-4
print(f"-10 // -3 = {-10 // -3}")  # 输出:3

# 浮点数整除
print(f"10.5 // 3 = {10.5 // 3}")  # 输出:3.0
print(f"10.9 // 3 = {10.9 // 3}")  # 输出:3.0

3.3 取余运算符(%)

取余运算符返回除法的余数。

# 基本取余
print(f"10 % 3 = {10 % 3}")  # 输出:1(10 ÷ 3 = 3余1)
print(f"15 % 4 = {15 % 4}")  # 输出:3(15 ÷ 4 = 3余3)
print(f"20 % 5 = {20 % 5}")  # 输出:0(20 ÷ 5 = 4余0)

# 负数取余(结果符号与除数相同)
print(f"-10 % 3 = {-10 % 3}")  # 输出:2
print(f"10 % -3 = {10 % -3}")  # 输出:-2
print(f"-10 % -3 = {-10 % -3}")  # 输出:-1

# 应用:判断奇偶数
num = 15
if num % 2 == 0:
    print(f"{num}是偶数")
else:
    print(f"{num}是奇数")  # 输出:15是奇数

# 应用:判断闰年
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"{year}是闰年")
else:
    print(f"{year}是平年")

4. 幂运算符(**)

幂运算符用于计算指数。

# 基本幂运算
print(f"2 ** 3 = {2 ** 3}")    # 输出:8(2的3次方)
print(f"3 ** 4 = {3 ** 4}")    # 输出:81(3的4次方)
print(f"10 ** 2 = {10 ** 2}")  # 输出:100(10的平方)

# 分数指数(开方)
print(f"4 ** 0.5 = {4 ** 0.5}")    # 输出:2.0(4的平方根)
print(f"9 ** 0.5 = {9 ** 0.5}")    # 输出:3.0(9的平方根)
print(f"8 ** (1/3) = {8 ** (1/3)}")  # 输出:2.0(8的立方根)

# 负数指数
print(f"2 ** -1 = {2 ** -1}")  # 输出:0.5(1/2)
print(f"10 ** -2 = {10 ** -2}")  # 输出:0.01(1/100)

# 大数幂运算
print(f"2 ** 10 = {2 ** 10}")  # 输出:1024

5. 运算符优先级

运算符的优先级决定了表达式中运算的执行顺序:

优先级 运算符 说明
1(最高) ** 幂运算
2 +x, -x 正负号
3 *, /, //, % 乘除取余
4(最低) +, - 加减
# 优先级示例
result = 2 + 3 * 4  # 先乘后加
print(f"2 + 3 × 4 = {result}")  # 输出:14

result = (2 + 3) * 4  # 括号优先
print(f"(2 + 3) × 4 = {result}")  # 输出:20

result = 2 ** 3 * 4  # 先幂运算,再乘法
print(f"2³ × 4 = {result}")  # 输出:32

result = 2 ** (3 * 4)  # 先算括号
print(f"2^(3×4) = {result}")  # 输出:4096

result = 10 // 3 * 2  # 同级从左到右
print(f"10 // 3 × 2 = {result}")  # 输出:6

result = 10 % 3 + 2  # 先取余后加
print(f"10 % 3 + 2 = {result}")  # 输出:5

6. 增强赋值运算符

增强赋值运算符将算术运算和赋值结合起来:

运算符 示例 等价于
+= 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
# 增强赋值运算符示例
num = 10

# +=
num += 5  # 等价于 num = num + 5
print(f"num += 5: {num}")  # 输出:15

# -=
num -= 3  # 等价于 num = num - 3
print(f"num -= 3: {num}")  # 输出:12

# *=
num *= 2  # 等价于 num = num * 2
print(f"num *= 2: {num}")  # 输出:24

# /=
num /= 4  # 等价于 num = num / 4
print(f"num /= 4: {num}")  # 输出:6.0

# //=
num //= 2  # 等价于 num = num // 2
print(f"num //= 2: {num}")  # 输出:3.0

# **=
num **= 3  # 等价于 num = num ** 3
print(f"num **= 3: {num}")  # 输出:27.0

7. 综合示例

7.1 计算器程序

"""
简单计算器
执行基本的算术运算
"""

# 获取用户输入
num1 = float(input("请输入第一个数字:"))
num2 = float(input("请输入第二个数字:"))

# 执行各种运算
print(f"\n{num1} + {num2} = {num1 + num2}")
print(f"{num1} - {num2} = {num1 - num2}")
print(f"{num1} × {num2} = {num1 * num2}")

if num2 != 0:
    print(f"{num1} ÷ {num2} = {num1 / num2:.2f}")
    print(f"{num1} ÷ {num2}(整除)= {num1 // num2}")
    print(f"{num1} % {num2} = {num1 % num2}")
else:
    print("除数不能为0!")

print(f"{num1} ^ {num2} = {num1 ** num2:.2f}")

7.2 温度转换

"""
温度转换
摄氏度和华氏度之间的转换
"""

# 摄氏度转华氏度
celsius = float(input("请输入摄氏度:"))
fahrenheit = celsius * 9 / 5 + 32
print(f"{celsius}°C = {fahrenheit:.1f}°F")

# 华氏度转摄氏度
fahrenheit = float(input("请输入华氏度:"))
celsius = (fahrenheit - 32) * 5 / 9
print(f"{fahrenheit}°F = {celsius:.1f}°C")

7.3 计算圆的周长和面积

"""
计算圆的周长和面积
"""

import math

radius = float(input("请输入圆的半径:"))

# 计算周长:C = 2πr
circumference = 2 * math.pi * radius

# 计算面积:A = πr²
area = math.pi * radius ** 2

print(f"\n圆的半径:{radius}米")
print(f"圆的周长:{circumference:.2f}米")
print(f"圆的面积:{area:.2f}平方米")

7.4 分数运算

"""
分数运算
"""
import fractions

# 创建分数
frac1 = fractions.Fraction(1, 2)  # 1/2
frac2 = fractions.Fraction(3, 4)  # 3/4

# 分数运算
print(f"1/2 + 3/4 = {frac1 + frac2}")   # 输出:5/4
print(f"3/4 - 1/2 = {frac2 - frac1}")   # 输出:1/4
print(f"1/2 × 3/4 = {frac1 * frac2}")   # 输出:3/8
print(f"3/4 ÷ 1/2 = {frac2 / frac1}")   # 输出:3/2

8. 数值精度问题

"""
浮点数精度问题
"""

# 浮点数计算可能不精确
result = 0.1 + 0.2
print(f"0.1 + 0.2 = {result}")  # 输出:0.30000000000000004

# 使用round()函数四舍五入
print(f"round(0.1 + 0.2, 2) = {round(result, 2)}")  # 输出:0.3

# 使用decimal模块进行精确计算
from decimal import Decimal, getcontext

# 设置精度
getcontext().prec = 4

a = Decimal('0.1')
b = Decimal('0.2')
result = a + b
print(f"Decimal('0.1') + Decimal('0.2') = {result}")  # 输出:0.3000

9. 本集总结

本集我们学习了:

  • 7种算术运算符的使用方法
  • 除法、整除、取余的区别
  • 幂运算的各种用法
  • 运算符的优先级
  • 增强赋值运算符
  • 多个实际应用示例
  • 浮点数精度问题

核心要点

  1. /是普通除法(结果为浮点数),//是整除(向下取整)
  2. %是取余运算,常用于判断奇偶、整除等场景
  3. **是幂运算,可以计算平方、立方、开方等
  4. 运算符有优先级,可以使用括号改变运算顺序
  5. 增强赋值运算符可以简化代码
  6. 浮点数计算可能有精度问题,必要时使用decimal模块

下一集预告:我们将学习比较运算符,用于比较两个值的大小关系。

10. 课后练习

  1. 编写程序,计算两个数的和、差、积、商、余数和幂
  2. 编写程序,输入一个整数,判断是奇数还是偶数
  3. 编写程序,输入年份,判断是否为闰年
  4. 编写程序,计算三角形面积(底×高÷2)
  5. 编写程序,计算梯形面积:(上底+下底)×高÷2

提示:算术运算符是编程的基础,熟练掌握各种运算符及其优先级非常重要!

« 上一篇 注释与代码规范 下一篇 » 比较运算符