资源简介 (共19张PPT)微项目3用迭代算法探究数据变化的规律Phthon编程------3迭代算法学习目标1.本项目的核心是理解迭代思想并运用循环结构完成迭代算法的编程实现,掌握迭代变量、迭代表达式的识别技巧,学会利用迭代算法设计程序进行问题推导。2.迭代算法的关键是:识别迭代变量建立迭代表达式控制迭代过程跳绳是一项简单易行的体育运动。为了增强体质,甲乙两位同学各自制订了循序渐进的锻炼方案。甲同学决定第一天跳绳100下,第二天开始每天增加5下。乙同学也决定第一天跳绳100加10下。两位同学按照上述方案锻炼30天,各自的总运动量是多少下 看看谁的总运动量大。活动1 观察数据累加的迭代算法乙同学训练日志第一天: 100第二天: 100第三天: 110第四天: …..….甲同学训练日志第一天: 100第二天: 105第三天: 110第四天: ……1 观察数据累加规律甲同学决定第一天跳绳100下,第二天开始每天增加5下。乙同学也决定第一天跳绳100下,以后每隔一天增加10下。甲同学每天的跳绳次数(用a表示):al=100 #第1天a2=a1+5 #第2天a3=a2+5 #第3天2.初步设计迭代算法 ——模拟 第一次 迭代乙同学每天的跳绳次数(用b表示):bl=100 #第1天b2=b1 #第2天b3=b2+10 #第3天迭代:是用旧值重复推出新值的过程。每一次迭代得到的结果会作为下一次迭代的初始值,如此一步步逼近所寻求的目标或得到需要的结果。迭代关系b1=100 #第1天b2=b1 #第2天b3=b2+10 #第3天al=100 #第1天a2=a1+5 #第2天a3=a2+5 #第3天#!/usr/bin/onv python3#甲同学每天的跳绳次数al=100 #第1天a2=al+5 #第2天a3=a2+5 #第3天#乙同学每天的跳绳次数b1=100 #第1天b2=b1 #第2天b3=b2+10 #第3天#显示甲乙同学3天跳绳的总数print(“甲同学3天共跳绳:,al+a2+a3,“下”)print("乙同学3天共跳绳:",b1+b2+b3,“下”)思考:尝试继续编写程序计算前10天的跳绳总数,程序需要编写多少行?(2)体验迭代算法程序----顺序结构使用顺序结构描述送代虽然直观,但编程及程序运行效率低,当迭代次数较多时,使用顺序结构就显得力不从心。可以尝试采用循环结构程序实现迭代算法。累计跳绳总数。在构造循环结构程序之前,需要分析出送代关系,这样才能设计出相应的迭代程序迭代算法是用计算机解决问题的基本方法之一。在使用迭代算法解决问题时,需要注意:1.确定迭代变量。在可以使用迭代算法解决的问题中,至少存在一个迭代变量。2.建立迭代关系式。这是解决迭代问题的关键。3.控制迭代过程。要用循环结构程序让迭代自动进行。活动2 用循环结构实现自动选代(1)每天的跳绳数迭代关系甲乙两位同学每天的跳绳数规律比较好找。在顺序程序设计中已经有体验,其选代关系式可如下表示:甲同学每天跳绳数量迭代关系式:ai=ai-1+5 (i>=2)乙同学每天跳绳数量迭代关系式:ai=ai-1(i为偶数,i>=2)和ai=ai-1+10(i为奇数,i>=3)(1).分析数据的迭代关系跳绳总量的迭代关系示意图每人跳绳总数如图所示。由此图很容易发现其计算规律是以前的总数加当天的数量,如,甲同学跳绳总数的迭代关系式为xi=xi-1+ai (i>=2)。(2).分析迭代过程的程序代码【1】每天的跳绳数迭代过程a=a+5 #甲同学每天都增加5次if i%2=1: #当前天数为奇数时b=b+10 #乙同学的跳绳次数增加10甲同学每天跳绳100下,第2天开始每天增加5下;乙同学每天跳绳100下,每隔一天增加10下。用a表示甲同学每天的跳绳数,b表示乙同学每天的跳绳数。每天的跳绳数迭代过程为:【2】新一天的跳绳累计总数迭代过程用x表示新一天甲同学的总跳绳数,y表示新一天乙同学的总跳绳数,新一天的跳绳累计总数迭代关系为:x=x+ay=y+b可以构建一个固定次数的循环来确定在什么时候结束迭代过程,在此过程中应用迭代公式让迭代变量自动迭代,计算出结果。3.用循环结构程序实现自动迭代运行完整的迭代程序,体验迭代的过程,并修改程序计算出n天后甲、乙两位同学各自的总运动量,比较谁的运动量更大、谁的训练更加科学。for i in range(2, n+1):a=a+5 #甲同学每天都增加5次if i%2==1: #当前天数为奇数时b=b+10 #乙同学的跳绳次数增加10次# 计算甲乙同学跳绳的累加次数x=x+ay=y+b#i/usr/ bin /env python3a=100 # 甲同学第1天的跳绳次数b=100 # 乙同学第1天的跳绳次数#甲乙同学累计跳绳次数分别用x、y表示X=a # 甲同学第1天累计跳绳次数y=b # 乙同学第1天累计跳绳次数n=30 # 跳绳的总天数for i in range(2, n+1):a=a+5 #甲同学每天都增加5次if i%2==1: #当前天数为奇数时b=b+10 #乙同学的跳绳次数增加10次x=x+a # 计算甲乙同学跳绳的累加次数y=y+b#显示甲乙同学n大跳绳的总数print(“甲同学,n,“天共跳绳”,x,下)print("乙同学",n,天共跳绳",下)跳绳总量的计算程序——迭代算法(循环结构)#从第二天开始选代计算for i in range(2, n+1):a=a+5 #甲同学每天都增加5次if i%2==1: #当前天数为奇数时b=b+10 #乙同学的跳绳次数增加10次x=x+a # 计算甲乙同学跳绳的累加次数y=y+b课堂小结:迭代迭代关系迭代算法语法顺序结构循环结构算法效率?课堂小结1、什么是迭代算法?迭代算法的3要素的构成2、迭代算法和循环结构的关系?谢谢观看! 展开更多...... 收起↑ 资源预览