APP下载

过招守护使

2018-06-30王丽丽

中国信息技术教育 2018年10期
关键词:宝箱号码语句

王丽丽

在正确绘制图腾图案后,山门打开。阿派心中窃喜。难道进入失落的世界,就这么容易?阿派正想入内,却发现门后还有一位守护使。这位守护使并非凶神恶煞,看了看他,说道:“守了大半辈子,终于有人陪我玩一回寻宝游戏啦!”只见他摆出十个宝箱,说道:“上有1到10的编号,只有一个宝箱中藏有宝物,猜中者方可踏入神秘世界。”

:这节课的设计灵感来源于计算机经典案例“猜数字”小游戏。教师通过在Python中编程实现游戏效果,掌握循环和分支结构。在教学设计时,教师要考虑学情,由易到难,分为三种难度的任务:猜一次、不限次数猜、限定次数猜。

初级难度:猜一次

1.问题分析

首先,从阿派(游戏者)的角度,梳理初级难度的游戏过程(如下页图1)。

其次,将游戏过程对应IPO模式(如下页图1)。

I(Input):程序的输入,包括用户手工输入、程序内部参数输入等。

P(Process):程序的主要逻辑处理,对输入的数据进行处理并产生结果。

O(Output):程序的输出,包括屏幕显示输出、文件输出等。

:对七年级学生而言,如何将自然语言转换为程序语言是一个难点。教师可以使用流程图、伪代码等形式,帮助学生分析问题,梳理逻辑。此外,掌握程序设计的基本方法,理解IPO模式,有助于学生日后分析和解决更复杂的问题。

2.Python实现

本例的程序输入环节,守护使需要事先将宝物藏匿于某个宝箱中,即事先确定一个宝箱号码为正确答案,而这个号码实际上是由计算机自动生成的。为了游戏的可玩性,笔者利用random.randint(1,10)产生1到10的随机数,模拟游戏开始时宝物随机放置在某个宝箱中的效果。接着,利用input()函数提示并允许阿派猜数,再利用int()函数将其转换为整型,便于程序处理环节的条件判断。

在初级难度游戏设计中,阿派只猜一次,守护使立刻给出反馈,提示号码猜大了,或猜小了,或正确。利用if条件语句,将阿派猜的号码(guess)与正确的宝箱号(number)作比较,即可实现这样的效果,具体的代码如图2所示。

:random是Python的常用模块。该模块中有几个常用的函数,如randint(产生随机数)、choice(从序列中返回一个随机元素)、shuffle(将序列中的元素随机排序)等,random模块的导入方法和turtle一样。在本例中,为了便于学生理解逻辑,笔者将条件判断分为三种情况(太大、太小、正确),并利用三条if语句实现判断。

中级难度:不限次数猜

1.问题分析

只猜一次,很难猜中,那就试一试不限次数,直至猜中。如图3所示,主要逻辑是这样的:首先,阿派猜一个号码,当号码不正确时,即guess≠number时,守护使提示太大或太小,并允许再猜,直至猜中为止。如果一次猜中,则跳过循环,直接提示正确,其中的“提示太大或太小”,可以利用分支语句来实现(如下页图4)。

2.Python实现

图3中重复猜数的过程,可以利用while语句来实现,只要条件满足,就不断循环,直到条件不满足时退出循环。其中的“提示太大或太小”,可以利用if...else来实现(如下页图5),程序运行效果如下页图6。

:Python是通过代码的缩进来决定内在逻辑的,用4个空格表示语句块的缩進。空格的多或少,都可能导致程序的运行错误。在Pycharm编辑器中,可以按Tab进行缩进,按Tab+Shift去除缩进。

高级难度:限定次数猜

1.问题分析

不限次数的猜数,显然不符合闯关的难度要求。那么,假定阿派只有3次机会来选宝箱。若3次都猜不对,则游戏结束;若3次内猜中,则直接跳出循环,游戏结束。

2.Python实现

利用for循环和range( )内建函数,可以指定循环次数。range( )函数返回的结果是一个整数序列的对象,其语法为range(start, stop[, step]),默认start为0,step为1。如图下页7所示,range(3)表示i依次为0、1、2,一共循环3次。在本例中,判断条件有三种情况(猜中、猜大了、猜小了)。像这种多个条件的判断,可以用elif来实现。

:由于Python并不支持switch语句,所以在多个条件判断时,可以用多个elif来实现。另外,在Python语言中,还有for...else结构,else中的语句会在循环正常执行完成后,再执行,while...else也一样。这也体现了Python语言的灵活性。

猜数诀窍:二分查找法

有没有什么方法,可以快速猜中正确的宝箱号码呢?可以利用二分查找法,每次将查找范围缩小一半,快速查找到正确的号码。如上表,先取1~10的中间数,大约为5。根据“小了”的提示,再从新范围6~10中再取中间数。重复以上步骤,不断缩小查找范围,直到找到正确的宝箱号码。

利用二分查找法,最多4次定能猜中宝箱号码。因为10个宝箱,范围在23<10<24之间,最大查找次数为log2n+1。同理可知,如果有100个宝箱,利用二分法,最多7次可以找到正确的宝箱。

:二分查找法是基本算法之一,其中心思想是分治,适用于在一个有序数组中寻找特定的数,在实际项目中应用很多。初中学生可以通过寻宝小游戏初步了解二分法的思想。

拓展练习

在《过招守护使》这一课中,主要学习了循环和分支,接触了while语句、for语句、if语句。针对学有余力的学生,教师不妨提供一些拓展练习,利用循环和分支来解决一些生活小问题,如BMI身体质量指数的计算、乘法口诀法,或结合之前所学的海龟模块进行图形化设计等。

猜你喜欢

宝箱号码语句
宝箱
关于华为软交换号码甄别的一些认识
宝箱3
宝箱1
基本算法语句
我喜欢
月光宝箱
我爱我班之错误号码
作文语句实录