第4课:计算机的数学课——基本运算

🎯 本课目标

  • 掌握Python中的基本数学运算
  • 理解运算优先级
  • 学会用Python解决实际问题
  • 制作科学计算器程序
  • 理解不同运算的应用场景

🧮 趣味引入:计算机的数学大脑

你知道吗? 计算机最初被发明出来,就是为了做数学计算!第一台电子计算机ENIAC就是用来计算导弹弹道轨迹的。

今天,让我们激活计算机的"数学大脑",看看它有多厉害!

小实验:用计算器计算:

  1. 3 + 4 × 5 = ?
  2. (3 + 4) × 5 = ?

如果你用普通计算器,可能得到错误结果。但Python的数学大脑很聪明,知道要先算乘除后算加减!


➕ 基本运算符

Python有7种基本数学运算符,就像7个数学工具:

| 运算符 | 名称 | 示例 | 结果 | 用途 |

|--------|------|------|------|------|

| + | 加 | 5 + 3 | 8 | 求和 |

| - | 减 | 10 - 4 | 6 | 求差 |

| | 乘 | 6 7 | 42 | 求积 |

| / | 除 | 20 / 4 | 5.0 | 求商 |

| | 幂 | 2 3 | 8 | 求幂 |

| % | 取余 | 10 % 3 | 1 | 求余数 |

| // | 整除 | 10 // 3 | 3 | 求整数商 |


🔢 运算符详细讲解

1. 加法:+

# 数字加法
print(5 + 3)        # 8
print(2.5 + 1.5)    # 4.0

# 字符串也能"加"(连接)
name = "小" + "明"
print(name)         # 小明

# 变量相加
apples = 3
oranges = 5
total_fruits = apples + oranges
print(f"水果总数:{total_fruits}")  # 水果总数:8

alt text

2. 减法:-

# 数字减法
print(10 - 4)       # 6
print(7.5 - 2.3)    # 5.2

# 负数
print(5 - 8)        # -3

# 实际应用:找零计算
price = 25
money = 50
change = money - price
print(f"商品价格:{price}元")
print(f"支付:{money}元")
print(f"找零:{change}元")

alt text

3. 乘法:*

# 数字乘法
print(6 * 7)        # 42
print(2.5 * 4)      # 10.0

# 字符串重复
print("哈" * 3)     # 哈哈哈
print("❤️" * 5)     # ❤️❤️❤️❤️❤️

# 计算长方形的面积
length = 8.5
width = 4.2
area = length * width
print(f"长方形面积:{area} 平方厘米")

alt text

4. 除法:/

# 普通除法
print(20 / 4)       # 5.0
print(10 / 3)       # 3.3333333333333335

# 注意:除法结果总是浮点数
print(8 / 2)        # 4.0 不是4

# 计算平均数
chinese = 92
math = 88
english = 95
average = (chinese + math + english) / 3
print(f"平均分:{average:.2f}")  # 保留两位小数

alt text

为什么会多出来一个 5?

  • 10 / 3在数学上是无限循环小数:3.3333...
  • 但计算机使用 二进制浮点数(IEEE 754)​ 存储小数
  • 很多十进制小数 无法被精确表示,只能近似存储
  • 在转换为字符串输出时,Python 会显示最接近的可表示值,于是出现了 ...335
  • 这是一个正常现象,不是 Python 的 bug。

5. 幂运算:**

# 平方
print(5 ** 2)       # 25 (5×5)
print(3 ** 2)       # 9 (3×3)

# 立方
print(2 ** 3)       # 8 (2×2×2)
print(4 ** 3)       # 64 (4×4×4)

# 10的幂
print(10 ** 2)      # 100
print(10 ** 3)      # 1000

# 计算圆的面积
pi = 3.14159
radius = 5
area = pi * (radius ** 2)
print(f"半径为{radius}的圆面积:{area:.2f}")

alt text

6. 取余运算:%

# 基本取余
print(10 % 3)       # 1 (10÷3=3余1)
print(15 % 4)       # 3 (15÷4=3余3)
print(20 % 6)       # 2 (20÷6=3余2)

# 判断奇偶数
number = 7
if number % 2 == 0:
    print(f"{number}是偶数")
else:
    print(f"{number}是奇数")

# 时间转换
total_seconds = 125
minutes = total_seconds // 60
seconds = total_seconds % 60
print(f"{total_seconds}秒 = {minutes}分{seconds}秒")

alt text

7. 整除运算://

# 整除
print(10 // 3)      # 3 (10÷3=3余1,只要整数部分)
print(15 // 4)      # 3 (15÷4=3余3)
print(20 // 6)      # 3 (20÷6=3余2)

# 分组计算
students = 45
group_size = 6
full_groups = students // group_size
remaining = students % group_size
print(f"{students}个学生,每组{group_size}人")
print(f"可以分成{full_groups}个完整小组")
print(f"还剩下{remaining}个学生")

alt text


🎪 运算优先级

重要规则:先乘除,后加减,有括号先算括号

优先级顺序(从高到低):

  1. () 括号
  2. ** 幂运算
  3. * / // % 乘、除、整除、取余
  4. + - 加、减

练习:看看计算机怎么算

# 没有括号的情况
print(3 + 4 * 5)     # 23 不是35!
# 先算4×5=20,再算3+20=23

# 有括号的情况
print((3 + 4) * 5)   # 35
# 先算括号3+4=7,再算7×5=35

# 更复杂的例子
print(2 + 3 * 4 ** 2)  # 50
# 1. 先算4**2=16
# 2. 再算3*16=48
# 3. 最后算2+48=50

# 加上括号
print((2 + 3) * 4 ** 2)  # 80
# 1. 先算括号2+3=5
# 2. 再算4**2=16
# 3. 最后算5*16=80

alt text

优先级口诀:

先括号,后幂方
乘除取余整除忙
最后再把加减算
从左到右别慌张

🧪 实际应用练习

应用1:购物车计算器

print("🛒 购物车计算器")
print("=" * 30)

# 商品价格
pencil_price = 2.5
notebook_price = 6.0
pen_price = 3.5

# 购买数量
pencil_count = 3
notebook_count = 2
pen_count = 4

# 计算
total = (pencil_price * pencil_count + 
         notebook_price * notebook_count + 
         pen_price * pen_count)

# 计算折扣(打9折)
discount = 0.9
final_price = total * discount

# 输出
print(f"铅笔:{pencil_count}支 × ¥{pencil_price} = ¥{pencil_price * pencil_count}")
print(f"笔记本:{notebook_count}本 × ¥{notebook_price} = ¥{notebook_price * notebook_count}")
print(f"钢笔:{pen_count}支 × ¥{pen_price} = ¥{pen_price * pen_count}")
print("-" * 30)
print(f"原价:¥{total}")
print(f"折扣:9折")
print(f"实付:¥{final_price:.2f}")  # 保留两位小数

alt text

应用2:几何图形计算

print("📐 几何计算器")
print("=" * 30)

# 长方形
length = 8.5
width = 4.2
rectangle_area = length * width
rectangle_perimeter = 2 * (length + width)

# 正方形
side = 6
square_area = side ** 2
square_perimeter = 4 * side

# 三角形
base = 10
height = 6
triangle_area = 0.5 * base * height

# 圆
radius = 5
pi = 3.14159
circle_area = pi * (radius ** 2)
circle_circumference = 2 * pi * radius

# 输出结果
print("长方形:")
print(f"  长={length}, 宽={width}")
print(f"  面积={rectangle_area:.2f}, 周长={rectangle_perimeter:.2f}")

print("\n正方形:")
print(f"  边长={side}")
print(f"  面积={square_area}, 周长={square_perimeter}")

print("\n三角形:")
print(f"  底={base}, 高={height}")
print(f"  面积={triangle_area}")

print("\n圆形:")
print(f"  半径={radius}")
print(f"  面积={circle_area:.2f}, 周长={circle_circumference:.2f}")

应用3:时间转换器

print("⏰ 时间转换器")
print("=" * 30)

# 输入总秒数
total_seconds = int(input("请输入总秒数:"))

# 计算
days = total_seconds // (24 * 60 * 60)
remaining = total_seconds % (24 * 60 * 60)

hours = remaining // (60 * 60)
remaining = remaining % (60 * 60)

minutes = remaining // 60
seconds = remaining % 60

# 输出
print(f"\n{total_seconds}秒等于:")
if days > 0:
    print(f"  {days}天")
if hours > 0:
    print(f"  {hours}小时")
if minutes > 0:
    print(f"  {minutes}分钟")
if seconds > 0:
    print(f"  {seconds}秒")

# 验证
total_check = (days * 24 * 60 * 60 + 
               hours * 60 * 60 + 
               minutes * 60 + 
               seconds)
print(f"\n验证:{total_check}秒(与输入一致)")

🎮 数学游戏

游戏1:猜数字计算

print("🔢 猜数字计算游戏")
print("=" * 30)

# 第一步:想一个数字
print("第一步:想一个1-10之间的数字")
input("想好了按回车继续...")

# 第二步:进行计算
print("\n第二步:进行以下计算")
print("1. 把你的数字乘以2")
print("2. 加上8")
print("3. 除以2")
print("4. 减去你原来的数字")
input("计算完成按回车查看结果...")

# 第三步:揭秘
result = 4  # 数学魔术的结果
print(f"\n我猜结果一定是...{result}!")
print("(无论你原来想的数字是多少,结果都是4!)")

数学原理(n×2+8)/2-n = 4,n会相互抵消

游戏2:24点游戏简化版

print("🎲 24点游戏(简化版)")
print("=" * 30)

# 随机数字(暂时用固定数字)
num1, num2, num3, num4 = 3, 4, 5, 2

print(f"四个数字是:{num1}, {num2}, {num3}, {num4}")
print("用加减乘除和括号,让结果等于24")

# 一个可能的解法
solution = f"({num1} + {num2}) * ({num3} - {num4})"
result = (num1 + num2) * (num3 - num4)

print(f"\n一个解法:{solution}")
print(f"计算结果:{result}")

if result == 24:
    print("✓ 正确!结果等于24")
else:
    print("✗ 错误!结果不等于24")

🔧 常见问题与调试

问题1:类型错误

# ❌ 错误示例
age = "10"
next_year_age = age + 1  # TypeError

# ✅ 正确做法
age = "10"
next_year_age = int(age) + 1
# 或者
age = 10
next_year_age = age + 1

alt text

问题2:除零错误

# ❌ 错误示例
result = 10 / 0  # ZeroDivisionError

# ✅ 预防方法
divisor = 0
if divisor != 0:
    result = 10 / divisor
else:
    print("错误:除数不能为零!")

问题3:浮点数精度

# 浮点数计算可能有微小误差
print(0.1 + 0.2)  # 0.30000000000000004
print(0.3)        # 0.3

# ✅ 解决方法:四舍五入
result = 0.1 + 0.2
print(round(result, 2))  # 0.3

问题4:大数计算

# Python可以计算非常大的数
big_number = 10 ** 100  # 1后面100个0
print(f"10的100次方有{len(str(big_number))}位数字")

# 但要注意浮点数溢出
big_float = 1e308  # 10的308次方
print(f"非常大的浮点数:{big_float}")

🧩 综合练习

练习1:温度转换器

编写程序,在摄氏度和华氏度之间转换:

公式:华氏度 = 摄氏度 × 9/5 + 32
      摄氏度 = (华氏度 - 32) × 5/9

练习2:BMI计算器

编写程序计算身体质量指数(BMI):

公式:BMI = 体重(kg) / 身高(m)²
标准:BMI < 18.5 偏轻
      18.5 ≤ BMI < 24 正常
      BMI ≥ 24 偏重

练习3:贷款计算器

编写程序计算每月还款额:

公式:每月还款 = 贷款总额 × 月利率 × (1+月利率)^期数 ÷ ((1+月利率)^期数 - 1)
假设:贷款10万元,年利率5%,分3年还清

📈 数学函数进阶

Python还有一些内置的数学函数:

# 绝对值
print(abs(-5))      # 5
print(abs(3.5))     # 3.5

# 四舍五入
print(round(3.14159, 2))  # 3.14
print(round(2.5))         # 2 (注意:银行家舍入法)

# 最大最小值
print(max(3, 5, 1, 9, 2))  # 9
print(min(3, 5, 1, 9, 2))  # 1

# 幂运算的另一种写法
print(pow(2, 3))    # 8 (2**3)
print(pow(2, 3, 3)) # 2 (2**3 % 3)

🎯 运算优先级练习

计算以下表达式,先自己想结果,再运行验证:

# 练习1
print(2 + 3 * 4)

# 练习2
print((2 + 3) * 4)

# 练习3
print(2 ** 3 * 4)

# 练习4
print(2 + 3 * 4 ** 2)

# 练习5
print((2 + 3) * (4 ** 2))

# 练习6
print(10 + 6 // 4 - 3)

# 练习7
print(10 + 6 // (4 - 3))

# 练习8
print(15 % 4 + 7 // 2)

答案

  1. 14
  2. 20
  3. 32
  4. 50
  5. 80
  6. 8
  7. 16
  8. 7

📱 项目:科学计算器

print("🧮 科学计算器 v1.0")
print("=" * 40)

while True:
    print("\n请选择功能:")
    print("1. 基本计算")
    print("2. 几何计算")
    print("3. 单位转换")
    print("4. 退出")
    
    choice = input("\n请输入选择(1-4):")
    
    if choice == "1":
        # 基本计算
        print("\n基本计算器")
        print("-" * 20)
        try:
            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:
                    print("错误:除数不能为零!")
                    continue
                result = num1 / num2
            elif operator == "**":
                result = num1 ** num2
            elif operator == "%":
                result = num1 % num2
            elif operator == "//":
                result = num1 // num2
            else:
                print("错误:不支持的运算符!")
                continue
            
            print(f"\n{num1} {operator} {num2} = {result}")
            
        except ValueError:
            print("错误:请输入有效的数字!")
    
    elif choice == "2":
        # 几何计算
        print("\n几何计算器")
        print("-" * 20)
        print("1. 长方形面积和周长")
        print("2. 圆的面积和周长")
        print("3. 三角形面积")
        
        geo_choice = input("请选择(1-3):")
        
        if geo_choice == "1":
            length = float(input("请输入长:"))
            width = float(input("请输入宽:"))
            area = length * width
            perimeter = 2 * (length + width)
            print(f"面积:{area}")
            print(f"周长:{perimeter}")
            
        elif geo_choice == "2":
            radius = float(input("请输入半径:"))
            pi = 3.14159
            area = pi * (radius ** 2)
            circumference = 2 * pi * radius
            print(f"面积:{area:.2f}")
            print(f"周长:{circumference:.2f}")
            
        elif geo_choice == "3":
            base = float(input("请输入底:"))
            height = float(input("请输入高:"))
            area = 0.5 * base * height
            print(f"面积:{area}")
            
        else:
            print("错误的选择!")
    
    elif choice == "3":
        # 单位转换
        print("\n单位转换器")
        print("-" * 20)
        print("1. 摄氏度 ↔ 华氏度")
        print("2. 厘米 ↔ 英寸")
        print("3. 千克 ↔ 磅")
        
        unit_choice = input("请选择(1-3):")
        
        if unit_choice == "1":
            temp = float(input("请输入温度:"))
            direction = input("转换为(C→F 输入1,F→C 输入2):")
            if direction == "1":
                fahrenheit = temp * 9/5 + 32
                print(f"{temp}°C = {fahrenheit:.1f}°F")
            elif direction == "2":
                celsius = (temp - 32) * 5/9
                print(f"{temp}°F = {celsius:.1f}°C")
            else:
                print("错误选择!")
                
        elif unit_choice == "2":
            # 其他转换类似
            print("功能开发中...")
            
    elif choice == "4":
        print("\n感谢使用科学计算器,再见!")
        break
    
    else:
        print("错误:请输入1-4之间的数字!")
    
    input("\n按回车键继续...")

📅 下节课预告

第5课:计算机的语文课——字符串处理

下节课你将学习:

  1. 字符串的基本操作
  2. 字符串切片和索引
  3. 字符串常用方法
  4. 制作文本处理工具
  5. 字符串格式化技巧

预习思考

  1. 如何获取字符串的长度?
  2. 如何提取字符串的一部分?
  3. 如何判断一个字符串是否包含某个字?

🏆 本课成就墙

完成本课学习,你获得了:

🧮 【运算大师】:掌握7种基本运算符

🎯 【优先级专家】:理解运算顺序规则

🔢 【计算达人】:能用Python解决数学问题

🛠️ 【工具能手】:制作实用计算工具

🤔 【思维高手】:培养计算思维能力

学习路径

  • ✅ 第1课:环境搭建
  • ✅ 第2课:print()函数
  • ✅ 第3课:变量
  • ✅ 第4课:基本运算
  • ⏳ 第5课:字符串处理

知识掌握评估

  • 我能正确使用7种运算符:□ 完全掌握 □ 基本掌握 □ 还需练习
  • 我理解运算优先级:□ 完全理解 □ 基本理解 □ 还需学习
  • 我能用Python解决数学问题:□ 熟练应用 □ 基本应用 □ 初步尝试
  • 我能调试运算错误:□ 熟练解决 □ 基本解决 □ 需要帮助

🌟 编程心法

数学是编程的基础
运算符是工具
优先级是规则
变量是记忆
代码是表达
实践是检验
从简单到复杂
从计算到创造
每一步都算数

记住:计算机是强大的数学工具,而你是这个工具的指挥家。用代码解决实际问题,让数学变得有趣和有用。


💬 给家长的话

亲爱的家长

今天孩子学习了Python的数学运算,这是编程与实际应用结合的重要一步。

孩子的收获

  1. ✅ 掌握7种基本数学运算符
  2. ✅ 理解运算优先级规则
  3. ✅ 学会用编程解决数学问题
  4. ✅ 培养逻辑思维和计算思维
  5. ✅ 制作实用工具程序

数学与编程的联系

| 数学概念 | 编程应用 | 教育价值 |

|---------|---------|---------|

| 四则运算 | 计算器程序 | 实际问题解决 |

| 运算顺序 | 优先级控制 | 逻辑思维 |

| 几何公式 | 图形计算 | 空间思维 |

| 单位转换 | 实用工具 | 实际应用 |

您可以这样做

生活应用

  1. 购物计算:让孩子用Python算购物总价、折扣
  2. 家庭记账:记录家庭开支,计算结余
  3. 旅行计划:计算路程、时间、花费
  4. 作业助手:用Python验证数学作业答案

思维训练

  1. 分解问题:如何将复杂计算分解为小步骤
  2. 验证结果:用不同方法验证计算正确性
  3. 优化方案:寻找更简便的计算方法
  4. 错误分析:从错误中学习优先级规则

温馨提示

  • 关注孩子是否理解优先级概念
  • 鼓励用Python解决实际问题
  • 允许犯错,错误是最好的老师
  • 分享孩子的计算器给家人使用

第4课结束。你现在已经能用Python进行各种数学计算了!

实践任务:

1. 制作一个家庭计算器(买菜、水电费等)

2. 用Python验证你的数学作业

3. 计算你的BMI指数

4. 制作一个温度转换工具

下节课,让我们探索Python如何处理文字信息!

第5课见!🚀


课程内容为本人与AI共创,如有问题可留言交流。后续时间允许会考虑制作相关视频教学。