第十八课:Python 的“工具箱” – 模块的初步使用
- 时长: 90 分钟
- 教学目标:
- 理解“模块”的概念:别人写好的、可以拿来用的 Python 代码文件。
- 知道为什么需要使用模块(省时省力,利用别人的智慧)。
- 学会使用
import
关键字将模块引入到自己的程序中。 - 掌握如何使用模块中提供的函数和变量。
- 通过使用
math
模块学习进行更复杂的数学计算。 - 通过使用
random
模块学习如何让程序产生随机性(比如实现简单的摇骰子、抽签)。 - 初步了解
import
的不同形式(as
别名,from...import
)。
课程内容
1. 复习与引入 (10 分钟)
- 复习: 快速回顾错误处理
try...except
和文件操作。 提及我们自己写代码来完成任务(比如计算平均分、找列表最大值)。 - 提出问题: 老师提问:“如果我想计算一个数的平方根怎么办?比如根号 9 是 3。或者我想计算圆的面积需要用到圆周率 π (大概 3.14159)。再或者我想让电脑帮我随机选一个幸运数字,或者模拟扔骰子,怎么做到呢?这些功能我们自己写是不是很麻烦?”
- 引出模块: 其实,很多常用的功能(比如各种数学计算、生成随机数、处理时间和日期等等),已经有很多厉害的程序员帮我们写好了,打包成一个个叫做模块 (Module)的文件,就像一个个专门的“工具箱”。我们只需要把这些工具箱“拿过来”用就行了,不用自己重新制造工具。
2. 什么是模块? (10 分钟)
- 概念: 模块就是一个包含 Python 代码的文件(通常是以
.py
结尾)。这个文件里可以有函数、变量、甚至类(以后会学)。 - 打个比方:
- 模块就像一个乐高积木套装,里面有很多不同形状和功能的积木(函数、变量),你可以拿来用。
- 模块就像一个文具盒,里面有铅笔(函数)、橡皮(函数)、尺子(变量 π)等工具,你需要用哪个就拿哪个。
- 标准库: Python 自己就自带了很多非常实用的模块,这些模块被称为 Python 的“标准库”。我们今天学的
math
和random
就是标准库中的模块。
3. 把工具箱“拿过来” – import 语句 (15 分钟)
- 作用: 使用
import
关键字,可以把一个模块“加载”到我们的程序中,这样我们就可以使用这个模块里的工具了。 - 语法:
import 模块名称
- 演示:
# 导入 math 模块 (数学工具箱) import math # 导入 random 模块 (随机数工具箱) import random print("模块导入完成。") # 导入成功后,通常不会有输出 # 如果模块名写错了,import 会报错:ModuleNotFoundError # import maths # 错误!模块名可能写错了
- 动手实践: 学生尝试导入
math
模块和random
模块。 故意把模块名写错,观察ModuleNotFoundError
错误。
4. 使用工具箱里的“工具” – 访问模块内容 (15 分钟)
- 语法: 导入模块后,要使用模块里面的函数或变量,需要先写模块名,然后用一个点
.
连接要使用的函数或变量的名字。import math # 使用 math 模块里的 pi 变量 (圆周率) print("圆周率 π 大约是:", math.pi) # 使用 math 模块里的 sqrt 函数 (平方根) num = 9 sqrt_result = math.sqrt(num) print(f"{num} 的平方根是:", sqrt_result) radius = 5 # 使用 math.pi 计算圆的面积 area = math.pi * radius * radius print(f"半径为 {radius} 的圆的面积是:", area)
import random # 使用 random 模块里的 randint 函数 (生成指定范围内的随机整数,包含两端) # 模拟扔骰子 (生成 1 到 6 的随机整数) dice_roll = random.randint(1, 6) print("你扔的骰子点数是:", dice_roll) # 随机选择列表中的一个元素 (使用 random.choice 函数) fruits = ["苹果", "香蕉", "橙子", "葡萄"] lucky_fruit = random.choice(fruits) print("今天你的幸运水果是:", lucky_fruit)
- 演示: 老师演示导入
math
模块并使用math.pi
和math.sqrt()
。 演示导入random
模块并使用random.randint()
和random.choice()
。 - 动手实践: 学生尝试使用
math
模块计算其他数字的平方根。 尝试使用random.randint()
生成 1 到 100 之间的随机数。 尝试使用random.choice()
从自己创建的列表中随机选一个元素。
5. 更多导入方式 (简单介绍) (10 分钟)
- 导入并起别名 (
import ... as ...
): 如果模块名字很长,或者想给模块起个短一点的名字,可以使用as
关键字。import random as rd # 给 random 模块起个别名叫 rd print("用别名调用随机整数函数:", rd.randint(1, 10)) # 现在不能再用 random.randint 了,只能用 rd.randint
- 只导入模块中的部分内容 (
from ... import ...
): 如果只需要模块中的少数几个函数或变量,可以使用from 模块名 import 名称1, 名称2, ...
。 这样使用时就不用写模块名和点.
了。from math import pi, sqrt # 只从 math 模块导入 pi 和 sqrt print("直接使用 pi:", pi) # 不用写 math.pi print("直接使用 sqrt:", sqrt(25)) # 不用写 math.sqrt(25) # from random import * # 不建议初学者使用这种方式,它会导入模块里的所有东西,容易混淆名字
- 讲解目的: 让学生了解有不同的导入方式,知道它们的基本语法。 强调初学者优先使用
import 模块名称
的方式,这样使用时需要写模块名称.功能名称
,能清楚地知道这个功能是从哪个模块来的,避免名字冲突。 - 动手实践: 学生尝试使用
import ... as ...
给random
模块起个别名,然后使用别名调用函数。 尝试使用from math import pi
,然后直接打印pi
。
6. 课堂练习 (15 分钟)
让学生独立完成以下练习:
- 练习 1: 编写一个程序,导入
math
模块,计算半径为 10 的圆的周长和面积并打印出来。(周长 = 2 * π * 半径,面积 = π * 半径²)。import math radius = 10 # TODO: 计算周长和面积,使用 math.pi # TODO: 打印结果
- 练习 2: 编写一个程序,导入
random
模块,模拟掷硬币 5 次。每次都随机打印“正面”或“反面”。(提示:可以使用random.randint(0, 1)
或random.choice(["正面", "反面"])
,结合for
循环重复 5 次)。 - 练习 3: 编写一个程序,导入
random
模块。创建一个学生名字列表。使用random.choice()
从列表中随机抽取一名学生,打印出“恭喜 [随机抽取到的学生名字],你是今天的幸运儿!”
7. 总结与提问 (10 分钟)
- 回顾: 回顾本节课内容:模块的概念(工具箱),为什么要用模块,
import 模块名
导入模块,使用模块名.功能名
调用模块内容。 学习了math
模块(数学运算)和random
模块(随机数)。 简单了解了as
别名和from...import
。 - 提问:
- 模块是什么?有什么用?
- 如何把一个叫做
time
的模块导入到你的程序里? - 导入
math
模块后,如何使用里面的圆周率 π? 如何计算 16 的平方根? - 导入
random
模块后,如何生成一个 1 到 100 之间的随机整数? 如何从列表[a, b, c]
中随机选一个元素? - 为什么初学者建议使用
import 模块名
这种方式导入?
- 答疑: 回答学生问题。
8. 布置课后作业 (5 分钟)
- 作业 1: 编写一个程序,导入
math
模块,计算并打印 2 的 8 次方(可以使用math.pow()
函数或**
运算符)以及 64 的平方根。 - 作业 2: 编写一个程序,导入
random
模块,模拟生成 6 个双色球号码:5个红色球(1-33 之间的随机整数,不能重复)和1个蓝色球(1-16 之间的随机整数)。打印生成的号码。(提示:红色球不重复可以先生成一个范围内的数字列表,然后使用random.sample()
或循环配合检查是否已存在)。 - 作业 3: (选做) 编写一个简单的石头剪刀布游戏。导入
random
模块,让电脑随机出一个手势(石头、剪刀、布)。然后让用户输入一个手势,判断用户赢、输还是平局。 使用if-elif-else
结构进行判断。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)