Skip to content

第一部分:随机数的“魔法”——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))  # 可能输出“香蕉”
  • 关键规则
    1. 必须先写import random(否则计算机不认识随机函数);
    2. randint(a, b)中a必须≤b(如randint(5, 3)会报错)。

模块2:“猜数字”游戏框架——整合随机数与条件判断(20分钟)

  • 游戏逻辑拆解(用流程图展示):

    1. 计算机生成1-100的随机数(秘密数字);
    2. 玩家输入猜测的数字;
    3. 计算机判断“猜大了/猜小了/猜对了”,用if-else反馈;
    4. 最多猜3次,超时则失败。
  • 代码示例(分步讲解):

    python
    import 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分钟)

  1. 典型错误分析:投屏2份错误代码(如忘记import random、未转换input()为整数),全班讨论修正。
  2. 游戏体验互评:每组选1份作品,其他组体验并评分(标准:“反馈是否清晰”“难度是否合理”),优秀作品获“游戏设计师”徽章。

五、总结与作业(10分钟)

课堂总结:

  • 随机数是“不确定但有范围的数”,生活中常见(抽奖、掷骰子);
  • Python用random库生成随机数,核心函数:randint(a,b)(整数)、choice(列表)(元素);
  • 猜数字游戏=随机数生成+用户输入+条件判断。

课后作业:

  1. 完善课堂游戏,增加“结束时显示猜了几次”的功能;
  2. 观察生活中的3个随机现象(如天气预报“降水概率30%”),记录在“随机现象观察表”中。

教学理论支撑:

  1. 皮亚杰形式运算阶段理论:通过掷骰子、抽卡片等具象操作,帮助学生理解“随机性”这一抽象概念,逐步建立概率思维(从“每次结果不确定”到“长期有规律”)。
  2. 维果茨基最近发展区:提供代码模板(基础任务)和拓展方向(进阶任务),让不同水平学生均能在“现有能力+引导”下完成挑战,如用流程图拆解游戏逻辑降低抽象难度。
  3. STEAM教育融合:整合数学(随机范围、概率初步)、技术(编程实现随机算法)、工程(游戏逻辑设计),让学生在“玩”中理解跨学科知识。