当前位置:首页>python>一个程序顶十本练习册!Python数学学习工具箱

一个程序顶十本练习册!Python数学学习工具箱

  • 2026-10-11 07:05:44
一个程序顶十本练习册!Python数学学习工具箱

一个程序顶十本练习册!Python数学学习工具箱


开篇小故事

期末考试快到了,五年级的乐乐翻着厚厚的笔记本,里面有之前做的各种 Python 数学小工具:

乘法表、面积计算器、猜数字游戏、奇偶判断器、公约数计算器、多边形画图、质数判断器、分数计算器、数学测验……

"每个都是一个单独的 Python 文件,好乱啊!"

乐乐灵机一动:"能不能把它们合并成一个程序?想用哪个就选哪个,像工具箱一样!"

当然可以!今天我们就来做这件事。


你能学到什么

  • • 学会制作菜单程序(按数字选择功能)
  • • 综合运用之前学过的知识点
  • • 培养模块化编程思维
  • • 做出一份属于自己的期末复习神器

工具箱功能总览

===== Python 数学学习工具箱 =====1. 九九乘法表2. 面积/周长计算器3. 猜数字游戏4. 奇偶数判断5. 公约数/公倍数计算器6. 正多边形画图7. 质数判断8. 分数计算器9. 随机数学测验0. 退出=================================请选择功能(0-9):

完整代码(可直接复制运行)

import randomimport mathimport timeimport turtlefrom fractions import Fraction# ===== 功能1:九九乘法表 =====def chengfabiao():    print("\n===== 九九乘法表 =====")    for i in range(1, 10):        for j in range(1, i + 1):            print(f"{i}×{j}={i*j}", end="  ")        print()    print()# ===== 功能2:面积周长计算器 =====def mianjizhouchang():    print("\n===== 面积/周长计算器 =====")    chang = float(input("请输入长(cm):"))    kuan = float(input("请输入宽(cm):"))    print(f"面积 = {chang * kuan} cm²")    print(f"周长 = {2 * (chang + kuan)} cm")    print()# ===== 功能3:猜数字游戏 =====def caishuzi():    print("\n===== 猜数字游戏 =====")    print("我心里想了一个 1~100 的数,你猜!")    answer = random.randint(1, 100)    times = 0    while True:        guess = int(input("你猜是多少?"))        times += 1        if guess > answer:            print("大了!")        elif guess < answer:            print("小了!")        else:            print(f"对了!你一共猜了 {times} 次。")            break    print()# ===== 功能4:奇偶数判断 =====def jiouzhu():    print("\n===== 奇偶数判断 =====")    num = int(input("请输入一个整数:"))    if num % 2 == 0:        print(f"{num} 是偶数(双数)")    else:        print(f"{num} 是奇数(单数)")    print()# ===== 功能5:公约数公倍数 =====def yueshubeishu():    print("\n===== 公约数/公倍数计算器 =====")    def gcd(a, b):        while b != 0:            a, b = b, a % b        return a    x = int(input("请输入第一个数:"))    y = int(input("请输入第二个数:"))    g = gcd(x, y)    l = x * y // g    print(f"最大公约数 = {g}")    print(f"最小公倍数 = {l}")    print()# ===== 功能6:正多边形画图 =====def duobianxing():    print("\n===== 正多边形画图 =====")    print("注意:画图窗口会单独弹出,画完后关闭窗口即可返回菜单。")    bian_shu = int(input("画几边形?"))    bianchang = int(input("边长多少?"))    turtle.speed(3)    turtle.pensize(2)    turtle.pencolor("blue")    for i in range(bian_shu):        turtle.forward(bianchang)        turtle.right(360 / bian_shu)    print(f"正{bian_shu}边形每个外角 = {360/bian_shu}°")    turtle.done()    print()# ===== 功能7:质数判断 =====def zhishu():    print("\n===== 质数判断器 =====")    num = int(input("请输入一个大于1的整数:"))    if num <= 1:        print("1 既不是质数也不是合数。")        print()        return    is_prime = True    for i in range(2, int(math.sqrt(num)) + 1):        if num % i == 0:            print(f"{num} ÷ {i} = {num // i},所以 {num} 是合数。")            is_prime = False            break    if is_prime:        print(f"{num} 是质数!")    print()# ===== 功能8:分数计算器 =====def fenshu():    print("\n===== 分数计算器 =====")    print("格式:a/b 运算符 c/d,例如 1/2 + 1/3")    print("运算符:+  -  *  /")    shizi = input("请输入算式:")    parts = shizi.split()    try:        f1_parts = parts[0].split("/")        op = parts[1]        f2_parts = parts[2].split("/")        f1 = Fraction(int(f1_parts[0]), int(f1_parts[1]))        f2 = Fraction(int(f2_parts[0]), int(f2_parts[1]))        if op == "+":            result = f1 + f2        elif op == "-":            result = f1 - f2        elif op == "*":            result = f1 * f2        elif op == "/":            result = f1 / f2        else:            print("不支持的运算符!")            print()            return        print(f"{f1} {op} {f2} = {result}")    except:        print("格式错误!请按 a/b + c/d 的格式输入。")    print()# ===== 功能9:随机数学测验 =====def ceyan():    print("\n===== 随机数学测验 =====")    print("选择难度:")    print("1. 简单(20以内加减)")    print("2. 中等(100以内四则)")    print("3. 困难(三位数乘除)")    level = input("请选择:")    if level == "1":        max_num = 20        ops = ["+", "-"]    elif level == "2":        max_num = 100        ops = ["+", "-", "×"]    else:        max_num = 200        ops = ["×"]    score = 0    wrong_list = []    start = time.time()    for i in range(1, 11):        a = random.randint(1, max_num)        b = random.randint(1, min(max_num, 99))        op = random.choice(ops)        if op == "+":            correct = a + b        elif op == "-":            if a < b:                a, b = b, a            correct = a - b        else:            correct = a * b        ans = input(f"第{i}题:{a} {op} {b} = ")        try:            if int(ans) == correct:                print("✓")                score += 1            else:                print(f"✗ 答案是 {correct}")                wrong_list.append(f"{a} {op} {b} = {correct}")        except:            print(f"✗ 答案是 {correct}")            wrong_list.append(f"{a} {op} {b} = {correct}")    used = round(time.time() - start, 1)    print(f"\n得分:{score}/10,用时:{used}秒")    if wrong_list:        print("错题:")        for w in wrong_list:            print(f"  · {w}")    print()# ===== 主程序:菜单 =====def main():    while True:        print("=" * 36)        print("   Python 数学学习工具箱")        print("=" * 36)        print("1. 九九乘法表")        print("2. 面积/周长计算器")        print("3. 猜数字游戏")        print("4. 奇偶数判断")        print("5. 公约数/公倍数计算器")        print("6. 正多边形画图")        print("7. 质数判断")        print("8. 分数计算器")        print("9. 随机数学测验")        print("0. 退出")        print("=" * 36)        choice = input("请选择功能(0-9):")        if choice == "1":            chengfabiao()        elif choice == "2":            mianjizhouchang()        elif choice == "3":            caishuzi()        elif choice == "4":            jiouzhu()        elif choice == "5":            yueshubeishu()        elif choice == "6":            duobianxing()        elif choice == "7":            zhishu()        elif choice == "8":            fenshu()        elif choice == "9":            ceyan()        elif choice == "0":            print("\n再见!祝期末考试顺利!")            break        else:            print("输入有误,请输入 0~9 之间的数字。\n")        input("按回车键继续……")# 程序入口if __name__ == "__main__":    main()

使用方法

  1. 1. 把上面全部代码复制到一个 Python 文件里(比如叫 math_toolbox.py)
  2. 2. 运行它
  3. 3. 看到菜单后,输入数字选择功能
  4. 4. 用完一个功能,按回车回到菜单

代码结构讲解

这个程序的架构像一个"商场导览":

部分
作用
def func():
每个功能都是一个小"店铺"
main()
商场大厅,引导你去对应的店铺
if __name__ == "__main__"
程序入口——相当于"开门营业"

这种结构叫模块化编程,每个功能独立一个函数,互不干扰,方便修改和扩展。


动手挑战

学完这个代码,你应该已经具备了基本的 Python 编程能力。试试这些挑战:

挑战
难度
给工具箱添加"计算圆的面积和周长"功能
⭐
给测验加上"历史成绩记录"功能
⭐⭐
把分数计算也加入随机测验
⭐⭐⭐
用 turtle 画一个"时钟"
⭐⭐⭐
做一个"完全数查找器"(完全数 = 所有真因子之和等于自身)
⭐⭐⭐

学校信息课考点总结

  • • 变量与数据类型(整数、浮点数、分数、字符串、列表)
  • • 输入输出(input / print)
  • • 条件判断(if / elif / else)
  • • 循环(for / while)
  • • 函数定义(def)
  • • 模块导入(random / math / time / turtle / fractions)
  • • 算法思维(辗转相除法、质数判断优化、二分查找思想)
  • • 计算思维(问题分解、模式识别、抽象化、算法设计)

这些正是《义务教育信息科技课程标准》中"算法与编程"模块的核心内容。


最新文章

随机文章