内容正文:
抽盲盒游戏
情境创设
期中考试结束后,为了活跃班级气氛,让大家更好地投入到后面的学习中,班主任张老师在班会课上设计了一个抽盲盒游戏。盲盒里设置了各种奖品,其中一个盲盒里面的内容是“游戏结束”,抽到“游戏结束”盲盒时,整个游戏结束。
你能帮老师编写这个“抽盲盒游戏”的小程序吗?
1
while循环语句
01
While循环流程图和基本格式
N
Y
循环变量=初值
执行循环体
循环条件是否满足?
Tab键或者四个空格
提醒:注意冒号和缩进
while <条件> :
<循环体>
3
问题1:分别用For循环和while循环实现同样功能的程序,它们的代码有何区别?
01
02
02
For循环和while循环对比
for循环只能循环固定次数,while可以循环任意次数。
问题2:for循环和while循环存在哪些共性?
在处理实际问题时,有很多规律性的操作,需要在程序中重复执行,就需要将重复执行的语句放入循环体中。循环语句的终止条件决定了整个循环语句能否重复执行某段程序的循环体。关键就是需要分析出循环体和终止条件。
4
03
抽盲盒游戏
问题分析
抽象建模
问题描述:
张老师在班会课上设计了一个抽盲盒游戏。盲盒里设置了各种奖品,其中一个盲盒里面的内容是“游戏结束”,当抽到“游戏结束”盲盒时,整个游戏结束。
你能帮忙编写”抽盲盒”这个程序吗?
要求:
根据张老师的要求生成多个盲盒,编号为1-n,抽盲盒的学生依次输入盲盒的编号,根据输入的盲盒编号,输出盲盒里面的内容。当盲盒内容为“游戏结束”时,结束游戏。当然要确保每次抽取的盲盒是随机的。
提炼核心要素
建立计算模型
1、如何存储盲盒内容,并确保每次抽取的盲盒内容是随机的
2、如何判断游戏结束
1、列表,随机函数
2、while循环的条件表达式
笔记本
签字笔
小红花
免值日
棒棒糖
辣条一包
张老师墨笔一幅
……
5
03
抽盲盒游戏
问题分析
设计算法
因为不知道游戏要进行几轮才会结束,所以不能限制盲盒的抽取次数,需要用while语句,只要没有抽到“游戏结束”盲盒,游戏就会一直进行下去。
定义一个列表,包含所有的盲盒内容。打乱列表顺序,确保每次抽取的盲盒是随机的。
提示学生输入一个数字,表示抽取盲盒的编号。
根据输入的编号,从盲盒列表中抽取对应的盲盒,输入盲盒内容,并将这个盲盒从盲盒列表中删除。
判断抽取的盲盒内容,若为“游戏结束”,跳出循环,结束游戏;否则回到步骤②,继续下一次抽取盲盒游戏。
初始化抽取的盲盒内容
N
Y
输入盲盒编号
输出盲盒内容,删除已抽取的盲盒
打乱盲盒列表顺序
初始化盲盒列表
没有抽到“游戏结束”盲盒
6
03
抽盲盒游戏
问题分析
设计算法
初始化抽取的盲盒内容
N
Y
输入盲盒编号
输出盲盒内容,删除已抽取的盲盒
打乱盲盒列表顺序
初始化盲盒列表
没有抽到“游戏结束”盲盒
get_box=’’
N
Y
input()
print();del box
random.shuffle(box)
box=[box1,box2,……,boxn]
get_box !=’ 游戏结束’
7
03
抽盲盒游戏
问题分析
编写程序
调试和运行程序
import random
#初始化盲盒列表
box = ['笔记本','笔记本','笔记本','笔记本','笔记本', '签字笔',
'签字笔','签字笔','签字笔','签字笔','签字笔', '小红花','小红花',
'小红花','小红花','小红花','棒棒糖', '棒棒糖', '棒棒糖', '棒棒糖',
'棒棒糖', '辣条','辣条', '一幅墨笔', '免值日', '游戏结束']
#打乱盲盒列表顺序
random.shuffle(box)
#初始化抽取的盲盒内容,字符串格式,最初为空
get_box=''
while ______________:
#输入抽取的盲盒编号
num = int(input("请输入要抽取的盲盒序号(0-%d):" % (len(box)-1)))
get_box = box[num]
#输出抽取的盲盒内容
print("恭喜你,抽到了", get_box)
#删除已抽取的盲盒
del box[num]
打开编程猫海龟编辑器
打开“抽盲盒1.0填空版.txt”文件
将“抽盲盒1.0填空版.txt”的内容复制粘贴到海龟编辑器中,海龟编辑器要切换到代码模式
将代码中的_________补充完整,调试运行程序。小组成员互相帮忙。
8
04
抽盲盒游戏2.0
问题升级
改写程序
Q2: 同学们抽盲盒的热情很高,但随机具有不确定性,有时候游戏才开始几轮就结束了。同学们希望游戏能进行至少10次,如何修改程序来满足他们的要求?
变化
循环终止条件改变
由抽到“游戏结束”盲盒 变为 抽到“游戏结束盲盒”并且抽盲盒次数达到10次以上
设计算法
增加变量rnd记录抽盲盒次数,初始值为0
改变循环终止条件表达式为 抽到“游戏结束”盲盒并且抽盲盒次数rnd>10次
9
可以用break语句跳出当前循环体,从而中断当前循环。
可以用continue语句结束本次循环,进行下一次循环,但不是终止整个循环。
04
补充知识:break语句、continue语句
当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
01
02
10
04
抽盲盒游戏2.0
问题升级
编写程序
调试和运行程序
import random
#初始化盲盒列表
box = ['笔记本','笔记本','笔记本','笔记本','笔记本', '签字笔',
'签字笔','签字笔','签字笔','签字笔','签字笔', '小红花','小红花',
'小红花','小红花','小红花','棒棒糖', '棒棒糖', '棒棒糖', '棒棒糖',
'棒棒糖', '辣条','辣条', '一幅墨笔', '免值日', '游戏结束']
#打乱盲盒列表顺序
random.shuffle(box)
#初始化抽取的盲盒内容,字符串格式,最初为空
get_box=''
#初始化抽盲盒次数,初始值为0
___________
while True:
#输入抽取的盲盒编号
num = int(input("请输入要抽取的盲盒序号(0-%d):" % (len(box)-1)))
get_box = box[num]
#输出抽取的盲盒内容
print("恭喜你,抽到了", get_box)
#删除已抽取的盲盒,'游戏结束'盲盒不删除
if box[num] != '游戏结束':
del box[num]
#更新抽盲盒次数
_____________
#循环终止条件判断
if ________________:
print("游戏结束,祝同学们健康成长、学业进步!")
break
打开“抽盲盒2.0填空版.txt”文件
将“抽盲盒2.0填空版.txt”的内容复制粘贴到海龟编辑器中,海龟编辑器要切换到代码模式
将代码中的_________补充完整,调试运行程序。小组成员互相帮忙。
11
05
抽盲盒游戏3.0
定制版游戏
制作个性化抽盲盒游戏
Q3: 请同学们以游戏开发者的身份,自定义盲盒游戏规则,设计一款抽盲盒游戏
友情提示
改变游戏结束条件
改变盲盒内容
……
12
06
课堂小结
while循环语句:
while <条件> :
<循环体>
while循环语句的特点
break语句、continue语句
运用while循环解决实际问题
N
Y
循环变量=初值
执行循环体
循环条件是否满足?
13
按需购买 理性消费 不要沉迷
14
07
课后拓展
Q4: 当同学输入的编号不在规定的盲盒编号范围内时,程序会报错,请修改程序解决这个问题。
体育艺术节马上要到了,活动策划人想在艺术节晚会活动中增加抽盲盒这个游戏,但是他们想要举行3轮抽盲盒游戏,每轮至少玩5次,能否修改程序实现他们的要求?(假设盲盒数量足够多,不会被抽完)
第三轮
15
期待下一次遇见你
Multimedia Cloud Transcode (cloud.baidu.com)
Content Adaptive Encoding 3.0
$$