版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高中信息技术学考复习——浅谈Python程序设计与计算思维“计算思维”对大家来讲是个比较陌生的词汇,为了方便理解,我们可以简单地从字面意思角度加以分析,将其分解为两个词:“计算”和“思维”,这其中的“思维”相对好理解,但是“计算”往往会被狭隘地理解为加减乘除,也就是说容易错误地将其等同于数学中的计算。实际上,该“计算”的内涵要更加宽泛,它不仅涵盖了数学中的计算,同时还包括人们分析和解决实际问题的一系列的方法和步骤,比如,我们解决诸如日常生活中的穿衣吃饭等问题,本质上也是“计算”,同样也需要运用“计算思维”。在日常工作、学习和生活中充斥着各种各样的问题,无不需要我们及时、正确地解决,具备一定的“计算思维”能力,并逐步加以提升,有助于我们更加科学、合理和高效地解决实际问题。运用“计算思维”的思想解决实际问题,简单的看就是在对问题进行深入细致地分析的基础上,首先将一个大的复杂的问题,分解为若干小的简单的问题,如果分解后的问题仍然比较大和复杂,就继续分解,直到简单和小到能直接解决为止。其次是确定一个解决问题的粗略的方法和步骤,再对粗略的步骤反复进行进一步的细化,直到每一个步骤都能很容易的完成为止。而这与计算机程序设计的思想有着极高的契合度,所以说,学习程序设计是培养和提高“计算思维”能力的最有效的途径之一。下面我们通过设计程序,解决人与计算机之间玩“石头剪刀布”游戏的人机博弈问题,做一个简单的阐述。大家应该对“石头剪刀布”这一猜拳游戏都比较熟悉,该游戏一般由两个人玩,每一局都是两个人同时出石头、剪刀或布中的任意一个,按照石头赢剪刀、剪刀赢布、布赢石头的规则判定胜负,可以一局定胜负,也可以三局两胜,或者五局三胜等。多局定胜负的问题相对比较复杂一些,但我们可以运用“计算思维”的思想,将其简化,先考虑解决一局定胜负的问题,然后运用循环控制一局定胜负的程序代码段执行若干次,并相应地做好胜负局数的统计计数工作即可。以下是关于一局定胜负情况的讨论。游戏的关键点主要有两点,一是两个人所出的拳是什么,二是判定胜负的规则。实际生活场景中,两个人之间玩该游戏时,石头、剪刀、布可以通过从口中喊出来,也可以用手势表示,胜负则直接由人来判断,而人与计算机之间玩该游戏,实质上,就是把两个人中的一个变成计算机,出拳与胜负判断保持不变。按计算思维的思想,首先来解决第一个关键点,即人和计算机出的拳是什么的问题。先考虑人,现实中两个人之间游戏时,出拳的信息是由口喊或手势确定的,前者出拳信息的载体是音频,后者的载体是图像,这两种载体形式让计算机来判定到底是石头、剪刀、布中的哪个,需要通过诸如麦克风、摄像头等设备输入到计算机中,并借助人工智能技术中的声音识别或图像识别完成,比较复杂,不是同学们当下能够完成的。同理,让计算机喊出,或者用图像显示出石头、剪刀、布,尽管相对容易一些,可同样不是一件简单的事情。可见,我们需要对如何确定和表示石头、剪刀、布的问题进行进一步研究。通过分析和抽象可知,石头、剪刀、布本质上是三个不同的符号,是游戏中需要输入的数据,而Python中的简单数据类型不外乎数值型、字符型、逻辑型等,能否从这些基本类型中选择其中的一种来表示石头、剪刀、布呢?答案是肯定的,最简单直接的方法是用字符类型,用汉字的石头、剪刀、布,当然也可以用大家比较熟悉的相应的英文单词表示,但是考虑到字符类型无法进行数学中诸如加减乘除等运算,所以我们选择用数值类型,即用三个整数0、1、2依次代表石头、剪刀、布,这样做的优点是简单,而且还可以进行数学计算,缺点是比较抽象。其次是胜负关系的判断,依据人机出拳的组合,共有9种情况,如下面的表1所示。表1:表2:在确定好以表2的形式表示问题后,接下来就需要考虑具体如何解决问题了。按计算思维的思想,需要先确定解决问题的粗略步骤。初步看大致需要以下三步:⒈输入(Input),输入人和计算机分别出的拳是石头、剪刀、布中的哪一个;⒉计算处理(Process),依据人和计算机的出拳,计算判定胜负;⒊输出(Output),输出胜负结果。即通常所说的IPO结构。一、输入的细化第一步先解决人的输入,考虑到采用整数0、1、2依次代表石头、剪刀、布,这样约定尽管简单有效,但毕竟不直观,由于不知道0、1、2到底是什么含意,所以可能会给玩游戏的人带来困扰,解决方法是增加0、1、2含义的提示。第二步考虑计算机的输入,即计算机如何出拳?实际上,计算机与人一样,它应该从石头、剪刀、布(即0、1、2)中随机地任意选取一个,所以,可以用计算机中的随机函数产生0、1、2三个数字中的任意一个,代表计算机的出拳。二、计算处理的细化由表2可知,人机出拳的组合共有9种情况,分别用相应的条件直接判断就可以,比如:如果人出0(石头),并且计算机也出0(石头),则为平局。三、输出的细化输出比较简单,只需要结合相应的出拳情况判断结果,直接输出平局、人胜、机胜即可。于是,我们可以得到如下的Python源程序代码。显然,上述程序可以采用条件语句的嵌套形式进行优化,此处不再赘述。上述程序尽管可以完成人机之间玩石头剪刀布的游戏,但是在胜负结果的判定上使用了9条条件语句,不仅繁琐,而且效率低下,有待改进。为此,我们进一步分析表1,可以看出,胜负结果有3种情况,分别是:平局、机胜、人胜,仿照石头、剪刀、布依次用整数0、1、2表示,胜负结果中的平局、机胜、人胜也依次用整数0、1、2表示,于是可以得到如下表3所示的判断胜负的表。表3:如果把表示胜负结果的数字连接到一起,可以得到一个数字串“021102210”,把它存储到一个字符串中,再依据人机出拳的数值换算出其在字符串中的位置(表4),取出存储胜负结果字符串中相应位置上的字符,就能得出胜负结果了。表4:经过分析和归纳总结,可以得到如下的公式(函数):p=3*i+j(其中,i表示人的出拳,j表示计算机的出拳,p表示该出拳组合对应的判定胜负字符串中的位置。例如,人出剪刀(i=1),计算机出布(j=2),代入公式可得:p=3*i+j=3*1+2=5,字符串5号位置上存储的是字符“2”,即人胜(注:Python中字符串中第一个字符的位置编号为0)。改进后的程序如下。上述程序中,人和计算机出的拳采用0、1、2表示,不够直观,需要改进。另外,胜负关系用一个如下表5所示的二维表的形式描述,更容易理解。但这两点都需要我们进一步学习Python中更多的数据类型,尤其是列表类型,才能有效解决。在学习列表类型后,可以知道,人机的出拳可以用一个一维列表表示,胜负关系的判定可以采用一个二维列表。
将数据用相应的列表表示后,可以得到如下的代码。可以看出,引入列表后编写的程序更加简捷高效了。其实,真正高效的程序应该是从数学角度作深入的研究,将计算处理部分尽可能地用数学中的公式(函数)表示。对上述表3中的数据进行更加深入地研究,得到表6的结果。表6:观察表6可以看出:i-j的值有6种情况与胜负结果w相同,另外3种不一样的序号分别为:1、2、5,他们共同的特点是:依据i-j的结果,大于等于0的与胜负结果一致,小于0的不一致。进一步研究i-j小于0的三种情况,可以发现,如果用(i-j)+3就与结果一致了。直观的想法是采用数学中的分段函数:该分段函数在Python中可以直接用条件语句实现。程序大家可以自己编写。下面我们把表6中增加一行i-j+3的计算结果,得到表7,再进行研究。表7:可以发现,如果取((i-j)+3)除以3的余数,就与胜负结果一致了!也就是表8。表8:可见人出拳的数值i,计算机出拳的数值j,与胜负判定的数值w,存在如下函数关系:w=((i-j)+3)%3
(%表示模余运算,即取余数)例如,人出剪刀(i=1),计算机出布(j=2),代入如上的代数式,可得:w=((i-j)+3)%3=((1-2)+3)%3=2(人胜)为了使输出更加直观,我们引入一个表示胜负的一维列表,代码如下。需要指出的是,由于Python中直接对负数进行模余运算得到的余数与胜负结果的数值一样,所以在上述程序中“计算胜负结果对应的数值”的语句可以直接写为:iWin=(iFingerOfPerson-iFingerOfComputer)%3程序运行结果也正确。以上所有的程序代码中,都仅仅是提示用户输入0、1、2,但万一有人不小心输入了一个其他的数字或字符,就会引发程序错误,为此,我们需要对人的输入进行检测,强制其只能输入0、1、2,直到其输入正确为止,也就是说在人输入错误的情况下,要求
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公证员刑事法律事务考核试卷
- 在线教育平台开发合同
- 2024年外墙涂料作业服务分包协议范本版
- 2024年签署:国际货运代理的独家合作协议
- 云计算课程设计云笔记
- 正规质押借款合同格式
- 瓷砖大理石买卖协议
- 2024屠户生猪代宰及屠宰设备租赁服务合同3篇
- 保暖蕾丝内衣采购合同
- 采购合同中的激励机制
- 2024国家开放大学电大本科《液压气动技术》期末试题及答案
- 商务服务机器人技术现状与未来发展趋势研究
- 工业物联网(IIoT)行业发展全景调研与投资趋势预测研究报告
- 金融数据分析-以Python为工具 课件 一、金融数据分析概览
- 佛山市、三水区2022-2023学年七年级上学期期末地理试题【带答案】
- 2024届湖北高三元月调考数学试卷含答案
- DL∕T 1476-2023电力安全工器具预防性试验规程
- 西方园林史智慧树知到期末考试答案章节答案2024年内蒙古农业大学
- 学年上学期期末职业高中高二年级数学练习试卷2
- 工程部设计部岗位职责
- 华为MA5800配置及调试手册
评论
0/150
提交评论