Appearance
第一部分:随机数的“魔法”——random库基础与猜数字游戏(2课时)
课题
随机现象的编程表达:用random库实现“猜数字”游戏
教学时间
2课时(90分钟)
课前准备
- 教师端:电脑(Python 3.10+)、投影仪、多媒体课件(含掷骰子/抽奖视频)、实物道具(6面骰子、标有数字1-10的卡片)、随机数生成器演示工具(在线工具:https://www.random.org/)。
- 学生端:电脑(Python环境,预装random库)、笔记本、骰子/卡片(每组1套)、“随机现象观察表”(记录掷骰子结果)。
- 教学素材:代码模板(
guess_number_basic.py)、分层任务单(基础/进阶)、奖励徽章(“随机大师”“游戏设计师”)。
一、导入活动:从“生活随机”到“编程随机”(20分钟)
活动1:“掷骰子大挑战”——感知随机性
- 分组操作:每组掷骰子10次,记录“点数为6”的次数,教师汇总全班数据(如“30组共掷300次,6点出现48次”)。
- 提问引导:“每次掷骰子的结果能确定吗?”“6点出现的次数大概占几分之几?”(引出“随机”“概率”概念)。
活动2:“猜卡片”游戏——理解“范围与随机”
- 教师手持1-10数字卡片,随机抽1张,学生猜数字(最多3次机会),记录“猜对次数”。
- 类比编程:“计算机也能像抽卡片一样生成随机数,我们今天就用Python的random库实现这个游戏”。
二、知识点讲解:random库与猜数字游戏基础(35分钟)
模块1:认识random库——让计算机“随机选择”(15分钟)
- 核心概念:random库是Python的“随机工具包”,能生成随机数字、选择随机元素,就像“计算机的骰子”。
- 基础函数演示:python
import random # 导入随机库(必须先导入才能使用) # 函数1:random.randint(a, b)——生成[a, b]之间的随机整数(包含a和b) num = random.randint(1, 10) # 生成1-10的随机数 print("随机数:", num) # 每次运行结果不同(如5、3、10等) # 函数2:random.choice(列表)——从列表中随机选1个元素 fruits = ["苹果", "香蕉", "橙子"] print("随机水果:", random.choice(fruits)) # 可能输出“香蕉” - 关键规则:
- 必须先写
import random(否则计算机不认识随机函数); randint(a, b)中a必须≤b(如randint(5, 3)会报错)。
- 必须先写
模块2:“猜数字”游戏框架——整合随机数与条件判断(20分钟)
游戏逻辑拆解(用流程图展示):
- 计算机生成1-100的随机数(秘密数字);
- 玩家输入猜测的数字;
- 计算机判断“猜大了/猜小了/猜对了”,用
if-else反馈; - 最多猜3次,超时则失败。
代码示例(分步讲解):
pythonimport random # 步骤1:生成秘密数字(1-100) secret = random.randint(1, 100) # 步骤2:获取玩家猜测(用input()函数,注意转换为整数) guess = int(input("请猜一个1-100的数字:")) # 步骤3:判断并反馈 if guess > secret: print("猜大了!") elif guess < secret: print("猜小了!") else: print("恭喜猜对了!")
三、练习题设计:分层实现游戏(25分钟)
基础任务(全员完成):“1-10猜数字”(3次机会)
- 要求:生成1-10的随机数,允许玩家猜3次,每次用
if-else反馈“大/小/对”,最后公布秘密数字。 - 代码框架(提供模板):python
import random secret = random.randint(1, 10) # 第1次猜测 guess1 = int(input("第1次猜(1-10):")) if guess1 == secret: print("第1次就猜对了!厉害!") else: # 补充第2、3次猜测逻辑... print("秘密数字是:", secret)
进阶任务(选做):“难度选择”功能
- 增加选项:玩家可选择“简单(1-10)”“中等(1-50)”“困难(1-100)”,根据选择调整
randint()的范围。
教师支持:
- 提供“错误排查指南”(如“输入字母报错”→提示
int(input())需数字输入;“范围错误”→检查randint(a,b)的a和b)。
四、讲解与互评:从“能运行”到“会优化”(10分钟)
- 典型错误分析:投屏2份错误代码(如忘记
import random、未转换input()为整数),全班讨论修正。 - 游戏体验互评:每组选1份作品,其他组体验并评分(标准:“反馈是否清晰”“难度是否合理”),优秀作品获“游戏设计师”徽章。
五、总结与作业(10分钟)
课堂总结:
- 随机数是“不确定但有范围的数”,生活中常见(抽奖、掷骰子);
- Python用
random库生成随机数,核心函数:randint(a,b)(整数)、choice(列表)(元素); - 猜数字游戏=随机数生成+用户输入+条件判断。
课后作业:
- 完善课堂游戏,增加“结束时显示猜了几次”的功能;
- 观察生活中的3个随机现象(如天气预报“降水概率30%”),记录在“随机现象观察表”中。
教学理论支撑:
- 皮亚杰形式运算阶段理论:通过掷骰子、抽卡片等具象操作,帮助学生理解“随机性”这一抽象概念,逐步建立概率思维(从“每次结果不确定”到“长期有规律”)。
- 维果茨基最近发展区:提供代码模板(基础任务)和拓展方向(进阶任务),让不同水平学生均能在“现有能力+引导”下完成挑战,如用流程图拆解游戏逻辑降低抽象难度。
- STEAM教育融合:整合数学(随机范围、概率初步)、技术(编程实现随机算法)、工程(游戏逻辑设计),让学生在“玩”中理解跨学科知识。