初中信息技术-Python编程-算法-【运动量化做比较】_第1页
初中信息技术-Python编程-算法-【运动量化做比较】_第2页
初中信息技术-Python编程-算法-【运动量化做比较】_第3页
初中信息技术-Python编程-算法-【运动量化做比较】_第4页
初中信息技术-Python编程-算法-【运动量化做比较】_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、初中信息技术Python编程一一算法【运动量化做比拟】生活中存在着许多迭代现象,如民间游戏叠罗汉、荡秋千的过程中就蕴含 着迭代。迭代在汉语词典中解释为更替、轮换。而在编程中,迭代是用旧 值重复推出新值的过程。每一次迭代得到的结果会作为下一次迭代的初始值, 如此一步步逼近所寻求的目标或得到需要的结果。在本工程中,我们将一起应用迭代算法探究数据序列的变化规律,通过观 察数据累加的迭代算法,分析迭代过程,观察迭代关系,体验迭代功能,揭开 迭代算法的神秘面纱。通过本节的学习,你将掌握以下技能:理解什么是迭代算法能够快速准确确实定迭代变量和迭代关系式学会用循环结构程序控制迭代过程能够利用迭代算法解决实际

2、问题专题一:观察数据累加的迭代算法迭代的本质但凡对代码的重复执行都叫作迭代吗?那可不一定!需要看这个重复的过程是否运用了前面迭代的结果来依次求 出后面的迭代结果。用键盘输人100个数不是迭代算法,输人过程中同步求出已经输入数的和就可以采用迭代的方式一个一个累加。观察数据中的累加规律跳绳是一项简单易行的体育运动。为了增强体质,甲乙两位同学各自制订 了循序渐进的锻炼方案。甲同学决定第一天跳绳100下,第二天开始每天增加5下。乙同学也决定第一天跳绳100下,以后每隔一天增加10下。两位同学按照上述方案锻炼30天,各自的总运动量是多少下?看看谁的总 运动量大。请观察比拟甲乙两位同学的训练日志,讨论第5

3、天两人各自的跳绳数是多 少、前5天谁的总运动量大。乙同学训练日志第一天:100甲同学训练日志第一天:100初步设计迭代算法程序.模拟第一次迭代。考虑简单的情况,用程序计算前三天每人的运动量。用顺序结构设计程序 就非常容易实现。甲同学每天的跳绳次数(用a表示):Al=100#第1 天a2=al+5 #第2 天a3=a2+5 #第3 天可见,甲同学当天的数量是前一天数量加5 ,每天的结果迭代了前一天的 数量。乙同学每天的跳绳次数(用b表示):bl=100#第1 天b2=bl #第2 天b3=b2+10 #第3 天可见,乙同学当天的数量是前一天数量不变或再加10,且均间隔一天出现, 虽然增加的数量不

4、同,但最终结果也是迭代了前面的数量。.体验迭代算法程序。把上面的程序语句连起来,再进行数据输出,三天的总运动量就能计算出 来。请调试下面的程序,并找出迭代的程序代码行,体会迭代的思想。#用顺序结构求解运动量程序#甲同学每天的跳绳次数 TOC o 1-5 h z al=100#第1天a2=al+5#第2天a3=a2+5#第3天#乙同学每天的跳绳次数bl=100#第1天b2=bl#第2 天b3=b2+10#第3 天print(“甲同学3天共跳绳:“,al+a2+a3/,Tn)print(“乙同学3天共跳绳:“,bl+b2+b3,”下)控制台甲同学3天共跳绳:315下 乙同学3天共跳绳:310下程序

5、运行结束:讨论:怎样编写程序能提高迭代算法的效率。尝试继续编写程序计算前10天的跳绳总数量,程序需要编写多少行?专题二:用循环结构实现自动迭代使用顺序结构描述迭代虽然直观,但编程及程序运行效率低。当迭代次数 较多时,使用顺序结构就显得力不从心。可以尝试采用循环结构程序实现迭代算法,累计跳绳总数。在构造循环结 构程序之前,需要分析出迭代关系,这样才能设计出相应的迭代程序。2.1分析数据的迭代关系.每天的跳绳数迭代关系。甲乙两位同学每天的跳绳数规律比拟好找,在顺序程序设计中已经有体验, 其迭代关系式可如下表示:甲同学每天跳绳数量迭代关系式:a尸ai+5 (i=2)乙同学每天跳绳数量迭代关系式:ai

6、=di-i (i为偶数,i=2)和ai=ai-i+10 (i为奇数,i=3).当天的跳绳累计总数迭代过程。每人跳绳总数如下图。由此图很容易发现其计算规律是以前的总数加当天的数量;如,甲同学跳绳总数的迭代关系式为Xi=Xi-i+ai (i=2) o.2分析迭代过程的程序代码根据迭代关系,就能找到可以重复执行的过程,即可迭代的过程。.每天的跳绳数迭代过程。甲同学第一天跳绳100下,第2天开始每天增加5下;乙同学第一天跳绳 100下,每隔一天增加10下。用a表示甲同学每天的跳绳数,b表示乙同学每 天的跳绳数。每天的跳绳数迭代过程为:a=a+5 #甲同学每天都增加5次if i%2=l: #当前天数为奇

7、数时b=b+10 #乙同学的跳绳次数增加10.新一天的跳绳累计总数迭代过程。用X表示新一天甲同学的总跳绳数,丫表示新一天乙同学的总跳绳数,新天的跳绳累计总数迭代关系为:x=x+ay=y+b由此,我们用a、b、x、y四个变量描述这个过程,建立了两组迭代过程的 程序代码。这四个变量都称作迭代变量。在迭代过程中,它们不断由旧值推出 新值。.2用循环结构实现自动迭代可以构建一个固定次数的循环来确定在什么时候结束迭代过程,在此过程 中应用迭代公式让迭代变量自动迭代,计算出结果。运行完整的迭代程序,体验迭代的过程。计算出n天后甲、乙两位同学各自的总运动量,比拟谁的运动量更大、谁的训练更加科学。#跳绳总量的

8、计算程序a=100 #甲同学第1天跳绳数b=100 #乙同学第1天跳绳次数x=a #甲同学第1天累计跳绳次数y=b #乙同学第1天累计跳绳次数n=30#跳绳总天数for i in range(2,n+l): #从第2天开始迭代计算a=a+5#甲同学每天都增加5次if i%2=l: #当前天数为奇数时|b=b+10#乙同学的跳绳次数增加1。次x=x+a#甲同学跳绳的累计次数y=y+b#乙同学跳绳的累计次数print(“甲同学天跳绳二X下“)p r i nt (乙同学二n, “天跳绳“,y下“)控制台甲同学30天跳绳5175下 乙同学30天跳绳5100下程序运行结束专题三:Python中数学函数的

9、使用在印度民间流传着一个有趣的故事。据说,印度的舍罕王打算奖赏国际象 棋的创造人宰相西萨班达依尔。国王问他想要什么,他对国王说:陛下, 请您在这张棋盘的第1个格中,赏给我1粒麦子,在第2个小格子里给2粒, 第3个小格里给4粒,以后每一小格都比前一小格多1倍。请您如此这般摆满 棋盘上所有64格的麦粒,都赏给我吧!国王觉得宰相的这个要求太容易满足 了,就下令赏给他这些麦粒。当人们把一袋袋麦粒搬来开始如数摆放时,国王 这才发现:就是把全印度的麦粒都拿来,也满足不了那位宰相的要求。3.1求任意前n个棋盘格的麦粒总数到底需要多少麦粒呢?要算出总数,先要知道每个格子中的麦粒数。故事中,有一句很关键的话 每

10、一小格都比前一小格多一倍。也就是说,第1小格1粒麦子,用2。表示;第2小格2粒麦子,就用21表示;第3小格4粒麦子,就用22表示。依次类 推,第64小格中的麦粒数就是263,总麦粒数自然就是2。+2+22+263。根据每个格子中麦粒数的递增规律,第n个格中的麦粒数为2Z个,求n 格中麦粒的总和,核心问题是:20+21+22+2秋的和。求乘方时,可以通过调用Python乘方函数pow()来帮助解决。#前|1个格的麦粒总数程序from math import*#导入math模块s=0k=int(input(前多少格?)for n in range(l,k+l):m=int(pow(2n-l) #

11、调用 pow()函数s+=m#累加求前n个格的和print(“第2d格:d粒,当前总数厂%(3巾,s) #显示过程数据print (当前 d 格落共 c”( k, s)控制台前多少格? 5第1格:1粒,当前总数1 第2格:2粒,当前总数3 第3格:4粒,当前总数7 第4格:8粒,当前总数15 第5格:16粒,当前总数31 当前5格总共31粒程序运行结束在程序中:from math import *语句是导入数学函数模块,之后可直接使用里面的一些数学函数。Input。默认接收到的是string类型,需使用int()函数把字符串型转换为 整型。当前格的麦粒数是前一个格的2倍,这是一种迭代关系。计算前n个格的麦粒数时,可以用前n-1个格麦粒数的和再加上第n个 格的麦粒数,这也是一种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论