




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课时8解析算法及程序实现[课时目标].掌握解析算法的基本思想。.掌握使用解析算法解决实际问题的基本方法,并通过编写程序实现问题求解。-知识梳理”课前自主预习——一、解析算法的基本思想解析算法的基本思想是指根据问题的前提条件与所求结果之间的关系,找出求解问题的数学表达式,并通过表达式的计算来实现问题的求解。二'解析算法解题的基本思路.建立正确的数学模型,即得出正确的数学代数式。.将数学代数式转化为Python式子。三'解析算法程序实现的步骤.运用解析算法分析问题,寻找问题中各要素之间的关系,用数学表达式表示它们的关系。.写出解决问题的解析步骤,编写程序实现,通过运行程序求得问题的正确解。-Q例题精析.课堂重难突破——由下列程序的功能是将十进制数整数转换为二进制数。程序运行时,输入一个十进制数整数,输出该十进制数对应的二进制数。程序运行效果如下图所示。请输入一个十进制整数:1。0十进制数:100转换为二进制数为:1100100实现上述功能程序如下,请回答下列问题:n=int(input("请输入一个十进制整数:”))y=xS=""while®:r=y%2②y=y//2⑴程序运行时,输入"10D",输出的结果为o(2)请在程序划线处填入合适的代码。划线①处应填入的语句为:;划线②处应填入的语句为:。答案(1)1ODH-269D(2)①ans=ans*16+ord(c)—ord("A")+10或ans=ans*16+ord(c)—55②flag=False解析(1)输入十六进制数为“10D”,十六进数10D转换为十进制数为269,因此输出的结果为:10DH-269D。(2)程序①处表示十六进制位置上是字母的情况,则将该字母转换为对应的数值,可用该字母的ASCII减去字母“A”的ASCII值再加上10,大写字母A的ASCII值为65,也可直接写为ord(c)—55,因此①处应填入的代码为ans=ans*16+ord(c)—ord("A")+10或ans=ans*16+ord(c)—55;如果输入的不是数字或不是“A—F”的大写字母,则输入有误,最后根据flag的值来输出结果,因此当输入有误时,将flag赋值为False,故②处应填入的语句为flag=FalseoQ)提升5.某仓库物品代码格式为“X—XXX—XXXXX—Y",其中“X”和“Y”均为0至之间的数字,“Y”为校验码。校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1加上第2个数字乘以2……依此类推,直到加上第9个数字乘以9,将该结果除以10,所得余数即为校验码。编写一个根据校验码校验物品代码的程序,功能如下:输入物品代码,如果输入的校验码与计算所得的校验码一致,则输出“校验通过”,否则输出“校验不通过”。程序运行效果如下图所示。请输入条形码信息:1—101—10000—2校验通过实现上述功能的程序如下,请回答下列问题:s=input("输入物品代码:")Lista=[]foriinrange(0,13):if①:Lista.append(int(s[i]))suma=Oforiinrange(0?9):②.check_new=suma%10check_old=Lista[9]if®print("校验不通过”)else:print("检验通过")(1)如输入的商品代码为“3—101—10020—0”,则输出的信息为。(2)请在程序划线处填入合适的代码。划线①处应填入的语句为:;划线②处应填入的语句为:;划线③处应填入的语句为:。答案(1)校验通过(2)①"0"<=5国<="9〃或"0〃<=5国ands[i]<="9"②suma+=Lista[i]*(i+1)或suma=suma+Lista[i]*(i+1)@check_new=check_old解析本题采用的算法是:首先将物品代码中的数字提取出来,并存储在列表Lista,然后按照规则计算出校验码,最后将计算得到的校验码与输入的检验码比较,输出结果。(1)根据规则计算可得校验码为0,与输入的校验码相等,因此输出的信息为“校验通过”。(2)①处代码表示当前字符串元素s[i]是否为数字字符,因此应填入的代码为〃0〃<=s[i]<=〃9〃或〃0〃<=s[i]ands[i]<=〃9";②处循环的功能是按规则计算物品代码中前9个数字的和,由于列表中第1个元素的索引号为0,因此当前列表元素Lista[i]应乘以(i+1),即②处应填入的代码为suma+=Lista[i]*(i+l)或suma=suma+Lista[i]*(i+l);根据if语句下面的代码可知,③处条件为check_new=check_old。print("十进制数:〃,n,〃转换为二进制数为:〃,s)(1)根据程序算法,输入十进制数60,转换为二进制数为o(2)请在程序划线处填入合适的代码。划线①处应填入的语句为:;划线②处应填入的语句为:。答案(1)111100⑵①y>0或y=0s=str(r)+s解析十进制数转换为二进制数的方法为:除2取余,直到商为0,最后将余数从下往上拼接。(1)十进制数60转换为二进制数为111100。(2)除2取余,直到商为0,因此循环条件为y>0或y=0;先得到的余数拼接在字符串s的最后,最后得到的余数拼接在字符s的最前面,因为r是整数,因此要先将r转换为字符型,然后拼接在字符串s的前面,故②处代码为s=str(r)+s。【变式训练】模拟一个简易计算器,其功能是:输入两个数和一个运算符(加、减、乘、除),进行算术运算并输出运算结果。程序运行效果如下图所示。输入第一个运算数:12输入第二个运算数:6输入运算符:*12.0*6.0=72.0⑴用Python语言编写的程序如下,请在划线处填入合适的代码,实现程序功能。a=float(input("输入第一个运算数:"))b=float(input("输入第二个运算数:"))ch=input("输入运算符:”)if①:ans=a+bprint(a,b,"=ans)elifch=="一":②print(a,"一",b,"=ans)elifch=="*":ans=a*bprint(a,b,"=ans)elifch=="/":if③一:ans=a/bprint(a,b,"=ans)else:print("除数不能为0")else:print(〃输入的运算符不正确!")⑵当输入的第一个数为4,输入的运算符为“%”,输入的第二个数为“0”,则程序输出的运算结果是()A.0B.4C.除数不能为0D.输入的运算符不正确!答案⑴①ch=="+"②ans=a—b③b=0⑵D解析(1)①处表示运算符为“+”运算的情况,因此①处代码为ch==〃+〃;②处代码表示计算“一”运算的结果,运算结果存储在变量ans中,因此②处代码为ans=a-b;做“/”运算时,还需满足分母不能为0,因此③处代码为b=0。(2)由于输入的运算符“%”不符合题中要求,因此程序执行时出现“输入的运算符不正确!”的信息,答案为D。霞角谷猜想:任意一个大于1的自然数n,进行如下运算:若n为奇数,则n的值替换为3n+l,若n是偶数时,则n变为原来的一半,经过若干次计算后,该数最终必为lo编写程序,输入一个大于1的自然数,计算从该数变为1的计算次数,并输出计算过程及计算的次数。程序运行效果如下图所示。输入一个大于1的自然数:100100-50f25-76-38-19-58-29-88-44-22-11-34fl7-52-26-13-40f20f10f5-16-8-4f2fl计算次数为:25(1)实现上述功能程序如下,请在程序划线处填入合适的代码。n=int(input("输入一个大于1的自然数:"))count=0print(n,,end=while①:count=count+lifn%2==l:②else:n=n//2ifn==l:print(n,"\\n")else:print(n,"一",end="")print(〃计算次数为:"+③)(2)当输入的n为3,则输出的计算次数为o(填数字)答案(1)①n=1或n>l②n=3*n+lstr(count)(2)7解析(1)当n不等于1时,则按照题目规则进行变换,直到n变为1为止,因此循环条件为n=1或n>l;条件n%2==l表示当前整数n为奇数时的情况,根据题意将n变为3n+l,因此②处代码为n=3*n+l;用变量count存储计算的次数,由于print语句输出时使用了“+”号,因此需使用str函数将count转换为字符型。(2)n=3时,计算过程为:3f10-5f16-8-4-2f1,共计算7次,因此答案为7o【变式训练】有一只猴子,第一天摘了若干个桃子,当场吃掉了一半,觉得还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半多一个。到第10天早上猴子想再吃时,发现只剩下一个桃子了,问第一天猴子共摘了多少个桃子?实现上述功能的程序如下,请在程序划线处填入合适的代码。x=1forninrange(2,11):printC'Thenumberofpeachesis:",x)【运行结果为】Thenumberofpeachesis:1534答案x=(x+l)*2解析(1)根据题意可知:先从最后一天的桃子数推出倒数第二天的桃子数,再从倒数第二天的桃子数推出倒数第三天的桃子数……,即从最后的结果倒推出原始的状况。假设第n天的桃子数为Xn,已知它是前一天桃子数Xn—1的0.5倍再减去1,用公式表示为Xn—l=(Xn+l)*2,初始条件为xl0=l。-随堂检测“课堂达标反债——1.编写程序,实现如下功能:输入包含数字、字母的字符串,统计该字符串中数字字符的个数,并输出统计结果。(1)用Python语言编写的程序如下,请在划线处填入合适的代码,实现程序功能。s=inpu《请输入字符串:,)count=0①numst="0123456789”foriinrange(0,n):if②:count+=1print(count)⑵输入字符串为“my2out304pop",输出的结果为。答案⑴①n=len(s)②s[i]innumst或"0"v=s[i]<="9"(2)4解析(1)要统计字符串包含数字字符的个数,首先要计算字符串的长度(即字符的总个数),然后依次判断每个字符是否为数字字符,如果是则进行计数。①处代码的功能是统计字符串的长度,因此代码为n=len(s);②处为判断当前字符是否为数字字符,当前字符为s[i],数字字符存储在numst中,因此②处代码为s[i]innumst,也可以写为"0"<=s[i]<="9"。(2)输入字符串内容为“my2out304pop",该字符串共包含4个数字字符,因此输出的结果为4。2.斐波那契数列(Fibonaccisequence),又称黄金分割数列、因数学家列昂纳多•斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、……,即从数列的第三项开始,当前项为前两项之和,编写程序实现求斐波那契数列的第n项的值。⑴用Python语言编写的程序如下,请在划线处填入合适的代码,实现程序功能。n=int(input("输入n的值:"))a=b=1foriinrange(3,n+1):c=a+bprint("第n项为:"+②)(2)当输入n=10,则程序输出的第n项为o答案(1)①a,b=b,c②str(c)(2)55解析(1)本题采用迭代法求斐波那契数列,斐波那契数列的规律为:从第三项开始,当前项为前两项之和,因此求出c后,应更新a、b的值为b、c,以便求解数列的下一项,因此①处代码为a,b=b,c;第n项的值为c,由于print语句输出时使用了“+”号,因此需使用str函数将c转换为字符型,即②处代码为str(c)o⑵可以根据斐波那契数列的特点推算出,第10项为55o课后提能训练解析(1)本题采用迭代法求斐波那契数列,斐波那契数列的规律为:从第三项开始,当前项为前两项之和,因此求出c后,应更新a、b的值为b、c,以便求解数列的下一项,因此①处代码为a,b=b,c;第n项的值为c,由于print语句输出时使用了“+”号,因此需使用str函数将c转换为字符型,即②处代码为str(c)o⑵可以根据斐波那契数列的特点推算出,第10项为55o课后提能训练课后提能训练课后提能训练解析(1)本题采用迭代法求斐波那契数列,斐波那契数列的规律为:从第三项开始,当前项为前两项之和,因此求出c后,应更新a、b的值为b、c,以便求解数列的下一项,因此①处代码为a,b=b,c;第n项的值为c,由于print语句输出时使用了“+”号,因此需使用str函数将c转换为字符型,即②处代码为str(c)o⑵可以根据斐波那契数列的特点推算出,第10项为55o课后提能训练课后提能训练课后提能训练课后提能训练课后提能训练课后提能训练课后提能训练与提升图黜巩固1.田径运动员技术等级国家标准规定,男子100米项目电子计时成绩等级如下:课后提能训练等级名称国际级运动健将运动健将一级运动员二级运动员成绩(秒)W10.25<10.50<10.93<11.74现要求编写程序实现如下功能:输入100米的成绩(秒),输出与该成绩对应的等级名称。用Python语言编写的程序如下,请回答下列问题。x=eval(input("请输入100米的成绩:"))if①:y="国际级运动健将"elifx<10.50:y="运动健将〃elif@:y="一级运动员”elifx<11.74:y="二级运动员”else:y="二级运动员以下”print("100米成绩:",x,"等级名称为:",y)(1)当输入100米的成绩为10.25,则程序输出等级名称为o(2)请在程序划线处填入合适的代码。划线①处应填入的语句为:;划线②处应填入的语句为:。答案(1)国际级运动健将(2)①x<=10.25②x<10.93解析(1)根据成绩与等级表可知,程序输出等级名称为“国际级运动健将”。(2)根据语句y=〃国际级运动健将〃可知,条件为x<=10.25;根据语句y=〃一级运动员〃可知,条件x<10.93。.现要求编写程序实现如下功能:输入正整数n,输出一个有规律的数字串,形式为“123—11—11111—1-321”。例如11=6时,显示的数字串为T234565421”。按此要求编写的程序如下,但加框处代码有错,请改正。n=int(input("Pleaseinputn:"))——,,"foriinrange(1,2*n+1):#改错①ifi>n:s=s+str(2*n—l)+""#改错②else:s=s+stKi)+""print(s)答案①range(l,2*n)或range(l,2*n,1)②s+str(2*n—i)解析数字串“123…n—Inn—1…321”共有2*n—1个,并且从1开始,因此range的初值为1,终值为2*n,步长为1,(1,2*n)数字字符,①处代码修改为range。,2*n)或①range。,2*n,1);当i>n时,输出的数字串是逐渐递减的,因此②处代码修改为s+str(2*n—i)o.编写程序,实现下列功能:输入一个二进制数,将二进制数转换为十进制数,并输出结果。程序运行效果如下图所示。请输入二进制数:1011二进制数:11O11转换为十进制数为:55用Python语言编写的程序如下,请回答下列问题。x=input("请输入二进制数:")◎s=0foriinrange(n):②print("二进制数:",x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省泸州市泸县重点名校2025届初三下第六次周考生物试题含解析
- 宁夏长庆高级中学2025届高三第一次高考模拟考试生物试题含解析
- 浙江省金华市聚仁教学集团2025年初三下学期第一次摸底考试英语试题试卷含答案
- 云南省大理白族自治州南涧彝族自治县2024-2025学年五年级数学第二学期期末经典模拟试题含答案
- 辽宁省朝阳市凌源市凌源三中2024-2025学年高三第四次调研考试生物试题含解析
- 吉林省吉林市第五十五中学2025年高三4月模拟考试数学试题含解析
- 电子书销售合同模板
- 个人家具买卖合同
- 二手住宅交易协议样本
- 编剧委托创作合同范本
- 建筑物拆除场地清理垃圾外运施工方案
- 康复辅具适配服务体系建设
- 2024-2025学年秋季第一学期1530安全教育记录(第一、二、三周安全教育记录表)
- 小学语文“跨学科学习任务群”内涵及解读
- 湖北省孝感市孝南区2023-2024学年八年级下学期期中数学试题
- QC-T 911-2023 电源车标准规范
- 2022-2023学年福建省厦门市集美区部编版四年级下册期中考试语文试卷
- 陕西省2024年高中学业水平合格考数学试卷试题(含答案)
- 快速入门穿越机-让你迅速懂穿越机
- 【电子商务个性化服务设计6000字(论文)】
- MOOC 知识创新与学术规范-南京大学 中国大学慕课答案
评论
0/150
提交评论