版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、初中信息技术python编程【来吧,实战练习】我们已经学习了程序的三中基本结构:顺序结构、选择结构、循环结构。并认识 了 Python中的数字、字符串、列表、元组、字典、集合等数字类型,接下来就利用学 习到的知识,解决问题吧!通过本章的学习,你将能够掌握:复习if语句、for语句和while语句学会利用Python编写小游戏并解决数学问题微工程1寻宝游戏“生命就是一场寻宝之旅,本来的你一无所有,为了得到更多的东西,你需要不断 去寻找不单生命是一场寻宝之旅,在我们的生活中也有许多以寻宝为主题的游戏、 电影。在寻宝的过程中,我们会面临着不同的选择,不同的选择背后又有着不同 的结果。为了能直观的体验
2、寻宝的过程,我们借助Python中学习到的选择结构进行实 现,准备好了吗?让我们开始吧。通过本节的学习,你将掌握以下技能:复习if、if.elifelse语句的使用学会编写文字寻宝游戏专题一:寻宝游戏VL0在编写游戏之前,我们需要先设计寻宝游戏,接下来,我们设计一款以寻宝丢 失的钥匙为主题的寻宝游戏。1.1游戏设计思路首先设定寻宝地点分别为教室、操场,丧失的钥匙是在操场上,选择不同的路径 会出现不同的结果提示。第一步:首先读入需要加密的字符串。为方便加密程序的编写,在读入完需要加密的字符串后,统一将字符串全部转换为大写。#恺撒密码程序,对大写字母进行加密处理message = input(请输
3、入需要加密的字符串:)message = message.upper()output = 1程序中的变量message用于存储读入的需要加密的字符串,随后调用upper。函数 将存储到message中的字母全部转换为大写字母。upper。函数的作用是将字符串中的 小写字母转为大写字母,如输入字符str为力love Python,那么在调用str.upper。后, 字符串str就变成了“I LOVE PYTHON二变量output用于存储加密后的密文。第二步:将message中的每一个字母在字母表上向后移动13个位置。在进行移位 的时候,要注意将字母转换为数字后再进行计算,计算完成后需要将结果再
4、转换成字 母。for letter in message:if letter.isupper():value=ord(letter)+13letter=chr(value)output=output+letterprirrt(,加密后的字符串为::output)因为输入的字符串中可能包含空格、标点符号等,因此在借助for循环逐个访问 message中的字符时需要借助isupper()函数判断读取到的字符是否为字母。如果读取到 的字符为字母,那么就借助。7()函数将该字母转换成对应的ASCII值并进行移位计算。 随后将计算结果借助chr()函数将结果再次转换为字符。最后将加密后的字母连接起来 输
5、出即可。第三步:通过前两个步骤我们基本完成了明文的加密,但是程序中是否还存在问 题呢?比方字母对应的ASCII值为85 ,当向后移13时,计算结果为98 ,通过查询 ASCII表可以知道加密后的字符为“b”。显然此时加密的密文出现了字母表A-Z之外的 字符,因此我们需要对超出范围的数值进行处理。以字母U为例,“U”的ASCII的值为85 ,当后移13位时,移到了字母b处,此 时已经超出了大写字母表范围。但是通过观察,我们可以发现,把字母b向前移26位 (字母表中有26个字母)即为字母U后移13位时的正确位置。因此,当位移后的字 符超出大写字母表时,只需要将该字符向前移26位即可。a|b|c|d
6、|e|f|gMi|j|k|l|m|n|o|p|q|r|s|tMv|w|x|y|z| |八|卜|tt for letter in message:if letter.isupper():value=ord(letter)+13letter=chr(value)if not letterisupper():value=ord(letter)-26letter=chr(value)output=output+letterprint(加密后的字符串为:output)程序中在对移位后的数值转换为字符后,又借助了 if语句判断计算后的字符是否 为大写字母,如果是那么输出,否那么说明此时的字符已经超出了大写
7、字母表,那么将该字 符前移26位。控制台请输入需要加密的字符串:工love Python ! 加密后的字符串为:V YBIR CLGUBA!小试牛刀加密的过程我们已经学习过了,那么你知道要如何解密吗?当位移量为-5时,加密程序要如何编写呢? 巩固与提升1、下面程序的循环次数是()for i in range(l,10,2):print(i)A、4B、5Cs 6D、72、编写一个接受句子的程序,并计算大写字母和小写字母的数量。假设为程序提供了以下输入:Hello world!然后,输出应该是:大写字母数:1 小写字母数:9微工程3折纸测珠峰世界上最高的山是什么山?珠穆朗玛峰。珠穆朗玛峰总高884
8、8米,是喜马拉雅山 脉的主峰,也是世界上海拔最高的山峰,很多人都对它仰慕着、充满着幻想,想一睹 它的真容,特别是攀登爱好者,更想去挑战它。而生活中的纸随处可见,一张普通A4 纸的厚度大概只有0.08毫米,和最高峰的高度比起来微缺乏道,其实他们之间的差距 并不算大,因为他们只差27次对折,这到底是怎么回事呢?让我们开始今天的学习吧。通过本节的学习,你将掌握以下技能:*复习while循环的使用*理解for循环和while循环的区别问题分析假设一张纸的厚度为0.08毫米,纸的大小无限大,那么请问对折多少次纸的厚度 可以到达珠穆朗玛峰的高度(8848米)?这就是有名的折纸测珠峰问题。从问题中我们可以知
9、道,初始时纸的厚度为0.08毫米,对折一次,纸的厚度变为 0.16毫米,再对折一次,纸的厚度变为0.32毫米,在对折一次,纸的厚度变为0.64毫 米假设纸的厚度为s ,那么每次对折后的纸的厚度会为原来的2倍,即2Xs ,珠穆朗 玛峰的高度我们用h表示,那么只要sh ,我们就要不停的折纸,直至纸的高度到达珠 穆朗玛峰的高度。为了更清晰的展示这个问题,我们用图表述这一过程。开始从图中可以看出,折纸的过程更适合用while循环实现。因为折纸的次数是由珠穆 朗玛峰的高度决定的,而当前折纸次数是不明确的,因此当循环次数不确定时,我们 用while循环控制程序的运行。编程实现第一步:初始化变量。从问题分析
10、中得知,需要存储的数值有纸的高度、珠穆朗 玛峰的高度以及对折的次数,在初始化时要注意,珠穆朗玛峰的高度要转换为毫米。VII假设一张纸的厚度为008毫米,纸的大小无限大, 3那么请问对折多少次纸的高度可以到达珠穆朗玛峰的高度(8848米)?S = 0.08h = 8848000count = 0程序中的变量s为纸的厚度,初始厚度为0.08毫米,变量h为珠穆朗玛峰的高度, 变量count用来统计折纸的次数,其值是从。开始累计的。在程序开始时,count值是定要赋值,否那么程序会出现命名错误。第二步:借助while循环实现折纸次数的统计。每对折一次纸的厚度就变成原来的 两倍,折纸次数增加lowhil
11、e s h:s = 2*scount=count+lprint(,折纸次数为:count)程序中循环结束的条件为sh ,为什么不是S= h呢?通过分析可以知道,当纸的 厚度没有到达珠穆朗玛峰高度时,我们就需要对折纸。因此While循环的条件是sh。 当纸的厚度到达珠穆朗玛峰高度时,将折纸次数输出。控制台折纸次数为:27 程序运行结束折纸测珠峰反响的是几何级增长问题,几何级增长就是成倍数增长,也称为爆炸 式增长,用数学术语来说就是A的n次幕的增长,类似与通常说的“翻番”,例如:2、 4、6、8、16、32、64的数学表示就是2; 2 2 2 2 26。在刚刚过去的 新型冠状病毒疫情期间,大家需要
12、居家隔离的原因也在于此,在绝对理想状态下(1 个患者1小时感染1个健康人),那么在出现第一例新冠肺炎感染者的36小时后,全 世界60亿人口都会被感染。拓展提高1、小芳的妈妈每天给她2.5元钱,她都会存起来,但是每当这一天是存钱的第5 天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100 元钱。请编程实现。2、有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的 一半多两个,问几天以后能卖完?请编程实现。微工程4 BMI计算#BM工指数计算系统flag=y1while flag!=,n,:name=input (请输入测试者姓名:”)weight=flo
13、at(input(请输入测试者体重(kg):,) height = float (input (请输入测试者身高(m):,) bmi=weight/height*2if bmi=18.5 and bmi23.9:| print(name/的体重正常,继续保持!,)else:print(name, 1的体重偏重,需要加强锻炼哦!,)flag=input(1是否继续计算下一个?(y/n),)微工程5计算阶乘和信息学奥赛题目#阶乘之和a=int(input()res=0for i in range(la+l):s = 1for j in range(li+l): s=s* jres=res+spri
14、nt(res)微工程6质数口袋 信息学奥赛题目#假如有一个口袋只能装质数,但是质数的总和不能超过L,请列出可以装的质数 import math def isPrime(y):for i in range(2,int(math.sqrt(y)+l): if(y%i=0):return Falsereturn Trueweight=int(input()L=0;num=2;count=0while L =2: if(isPrime(num) = True):|L += num if(Lweight):breakprint(num) count+=lnum += 1 print(count)从上图中
15、我们可以看到,当开始游戏后,会出现2个可供选择的地点:教室和操 场,如果选择教室,那么会出现提示“没有钥匙”,如果选择的是操场,那么出现提示“找 到钥匙”,这是非常典型的条件结构,下面我们开始编写程序吧。1.2寻宝游戏初实现第一步:在程序一开始要输入提示信息,告知玩家这是一个寻找钥匙的游戏,随 后给出可供选择的两个地点:教室和操场,并进行编号。#寻宝游戏print。糟糕,钥匙不见了,你会去哪里寻找?)print( 1.教室).操场,)第二步:给出可供选择的地点后,就需要等待用户输入了。程序中我们借助变量 place获取用户的选择,当输入为1时,给出提示“没有钥匙”;当输入为2时,提示我 到钥匙
16、” ;1、2之外的输入,统一提示“随便行动是找不到丧失的钥匙的! 。这一过程 在实现时可以用过if.el if.else进行实现。place = int(input(,请输入地点的数字编号:.)if place = 1:print没有钥匙,)elif place=2:print(找到钥匙,)else:|print。随便行动是找不到丧失的钥匙的!,)专题二:寻宝游戏进阶通过专题1的学习,我们已经实现了简单版的寻宝游戏,接下来我们可以进扩展寻宝游戏,让寻宝游戏更好玩。增加游戏关卡我们可以为游戏设置多层的关卡,比方中选择教室时,出现信息提示“同学A在学 习”,随后出现选项:1 .找同学A帮助一起找,
17、2.不要打搅他,还是自己找。选择1那么 提示“在同学A的帮助下找到了钥匙”,选择2提示为“教室太大了,没有找到二增加 的功能如下列图所示。从上图中我们可以看到,找到钥匙的途径有2个,一个是在教室中找同学A帮助, 此时可以找到钥匙;另外一个途径是在操场上阻止乱丢垃圾的同学B,然后在B同学 身上找到钥匙。当然你也可以仅保存一条找到钥匙的途径。寻宝游戏实现步骤1 :首先我们先完成教室局部的功能。从图2.1中我们可以看到,中选择教室 时,也会出现两个不同的选项,因为我们需要在选择了教室后,再次使用ifelifelse语句进行结果的判断。7 if place = 1:891011121314151617
18、print(,同学A在学习)prinHl.找同学A帮助一起找,)print。2.不要打搅他,还是自己找,)place_l = irrt(input(请输入数字编号:)if place_l=l:在同学A的帮助下找到了钥匙Delif place_l=2:print”教室太大了,没有找到,)else:print(,随便行动是找不到丧失的钥匙的! ,)在玩家选择了教室后,展示出提示信息并再次给出可选择的选项,此时通过变量 place_l获取玩家的再次输入,并根据输入的结果进行判断。步骤2 :编写操场局部的程序。操场局部的程序和教室基本一致,只是出现的提 示信息不同。181920212223242526
19、2728elif place = 2:print同学B在乱扔垃圾,).阻止同学B,不要乱丢垃圾,)print02.不管他,找钥匙要紧,)place_2 = irrt(inpirt(请输入数字编号:)if place_2 = 1:|pri.(钥匙在B同学身上,找到钥匙,)elif place_2 = 2:|print”操场太大了,没有找到,)else:print(,随便行动是找不到丧失的钥匙的! ,)在玩家选择了操场后,展示出提示信息并再次给出可选择的选项,此时通过变量place_2获取玩家的再次输入,并根据输入的结果进行判断。至此,文字寻宝游戏基本实现了,当然,你也可以设计属于自己的寻宝游戏。
20、巩固与提升1、周末小明和爸爸、爷爷一起去公园玩,公园票价划分如下,小明13岁, 爸爸比他大20岁,爷爷比他大42岁,那么他们三个人一共要花费一元。if age4: price=0 elif age18: price=5elif age55: price=10else:price=82、以下代码存在3处错误,请修复并运行:direction=input(.请输入表示方向的英文单词:,).lower() if direction=east:print(方向是东)elif direction=southprint(,方向是南1)elif direction = west1:print。方向是西)el
21、if direction = 1 north:print(方向是北,)elif:print(1请输入正确的英文单词)微工程2恺撒密码A : QB LBH YVXR CLGUBA?B : LRF,V YBIR CLGUBA.A和B的对话你能看懂吗?是不是感觉他们的对话很外星文?其实他们的对话内 容并不是无意义的,只不过A和B在对话的时候使用加密技术。所谓加密即使用一定 的规那么(即密钥),使原文(即明文)变成密文。A和B的对话原文为“Do you like Python?”、“Yes, I love Python.那么你知道A、B对话的加密规那么是什么吗?接下来 我们就学习一种最简单且最广为人知
22、的加密技术凯撒密码。通过本节的学习,你将掌握以下技能:*复习for循环以及if语句的使用*学习upper。、ord()、chr()函数的用法加密算法在密码学中,存在五个基本概念:明文、密文、加密、解密和密钥。1)明文:明文即为需要隐蔽的消息;2)密文:密文就是明文隐蔽后的结果;3)加密:将明文变换成密文的过程称作加密;4)解密:由密文恢复出明文的过程称作解密;5)密钥:密钥是一种参数,是在明文转换为密文或将密文转换为明文的算法中输 入的参数,又分为加密密钥和解密密钥。我们学习的恺撒密码,又称恺撒加密、恺撒变换、变换加密,是一种替换加密的 技术。加密的过程是将明文中的所有字母都在字母表上向后(或
23、向前)按照一个固定数目进行偏移从而替换形成密文。例如,当偏移量是3的时候,所有的字母A将被替 换成D , B变成E ,以此类推,如下列图所示。A B C D E FA B C D E F恺撒密码是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们 进行联系。因为恺撒密码非常容易被破解并且在实际应用中无法保证通信平安,因此 恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码根据偏移量的不同,还存在假设干特定的恺撒密码名称,如偏移量为1。时 称为Avocat、偏移量为13时称为ROT 13、偏移量为-5时称为Cassis、偏移量为-6时称 为 Cassetteo恺撒密码是对字母进行移位操作的,在编程程序实现时,我们需要将读入的字符 串中每一个字母与位移量进行算术运算。我们知道,在Python中字符和数字是无法直 接进行算术运算的,因此我们需要先将字符转换成数字。那么要如何进行转换呢?很 简单,我们可以借助ASCII表将字母转换成对应的ASCII值后再进行计算。字符的存储在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0 ),例如,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版土建项目施工人员劳动合同范本9篇
- 2025年仓储果蔬存储合同
- 2025年智能社区内新型消费体验商铺租赁合同2篇
- 2025年分销代理合作模板书
- 2025年医疗支持服务合作协议
- 2025年主题公寓租赁协议
- 2025年危险品运输报关报检协议
- 2025年作品使用授权合同
- 2025版外墙内保温系统施工与节能监测合同3篇
- 2025版信用卡医疗借款服务协议3篇
- 安全常识课件
- 河北省石家庄市2023-2024学年高一上学期期末联考化学试题(含答案)
- 小王子-英文原版
- 新版中国食物成分表
- 2024年山东省青岛市中考生物试题(含答案)
- 河道综合治理工程技术投标文件
- 专题24 短文填空 选词填空 2024年中考英语真题分类汇编
- 再生障碍性贫血课件
- 产后抑郁症的护理查房
- 2024年江苏护理职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 电能质量与安全课件
评论
0/150
提交评论