2.3 周而复始的循环 教案

文档属性

名称 2.3 周而复始的循环 教案
格式 docx
文件大小 25.5KB
资源类型 教案
版本资源 教科版(2019)
科目 信息技术(信息科技)
更新时间 2020-11-23 15:46:00

图片预览

文档简介

教科版2019信息技术必修1数据与计算
第2单元编程计算2.3周而复始的循环教学设计
【教材分析】
循环结构通常包含两种类型:重复一定次数的计数循环;重复直到某种情况结束的条件循环。在Python中使用for语句来创建计数循环。教材介绍了for循环的基本格式、循环体、循环次数的控制等。由于Python中for循环次数和列表有密切联系,因此在本节引入了列表,并介绍了列表常见的操作如:创建、添加、赋值、删除和输出等。
在Python中使用while语句来创建条件循环。教材中介绍了while循环的基本格式、循环体、循环条件的设置等。由于条件循环的条件设置容易出错,因此可以借助流程图对循环执行的原理进行分析。
调试程序是编程中不可缺少的环节,但难度不大,教材以while循环的活动为例,一方面可以帮助理解条件循环的执行原理,另一方面介绍了调试的方法。
【教学建议】
本节我们将围绕“学习投资理财”项目展开学习。本项目主要包含“计算5年储蓄存款收益”和“计算理财产品收益”两个任务。“计算5年储蓄存款收益”任务主要了解循环的作用,理解循环结构的执行原理,掌握计数循环的使用方法;“计算理财产品收益”则侧重掌握条件循环的使用方法,感受循环对计算效率的提高。
任务一的活动“计算利率不变情况下的到期存款总额”,是下一活动的铺垫,它无需用到循环语句,用解析法可以直接给出答案。考虑到程序的复杂度,该活动没有考虑四舍五入的问题。活动可以让学生自己探索,既是对前面内容的复习,也是引入下一活动的过渡。活动2在活动1的基础上利率发生了变化,直接使用解析法不够方便。因此在这个活动中教师更关键的是引导学生对循环体的提炼,总结出“n年的存款总额= n-1年存款总额 *(1+第n年利率)”。在计数循环中还会用到列表,这也是Python语言和以往程序语言教学差异较大的一个知识点,而且列表本身非常灵活,教师要通过实例让学生了解它的常见操作。尤其在列表用于计数循环时range的范围确定。本活动是循环结构的开始,知识点较多,难度较大,教师适当补充练习,巩固所学。
任务二只有一个活动“计算理财产品收益”。因为有任务一的基础,因此学生提炼循环体“money=round(money*(1+0.037),2)-20000”没有太大难度。这时教师可以创设认知冲突,让学生感受到在循环次数无法确定的情况下计数循环不可用,从而激发学生学习新知识的欲望。条件循环相较于计数循环更加复杂,因此建议教师在课堂教学的时候可以使用流程图来分析循环语句的执行原理,让学生通过流程图更深刻地理解条件循环的格式、功能和条件设置。
【学习目标】
1、了解循环的基本结构。
2、学会计数循环的使用方法。
3、学会条件循环的使用方法。
4、熟练使用循环解决实际问题。for 循环的工作原理。
【教学重点、难点】
循环的基本结构。计数循环的使用方法。条件循环的使用方法。使用循环解决实际问题。。
【教学过程】
引入
对人来说,长时间重复做同- -件事情,通常会觉得不愉快,且效率会有所下降。但计算机往往不知疲倦,非常适宜用重复的方式完成任务。我们将计算机程序中某些代码的反复执行称为循环。Python中既有重复一定次数的计数循环,也有重复到某种情况结束的条件循环。
随着“理财时代”的到来,“你不理财,财不理你”成为人们的一句口头禅。我国金融市场日益繁荣,为个人投资者提供的投资理财产品和渠道越来越多,如储蓄存款、股票、债券、保险等。因此,理财规划的重要性日益凸显。本节我们将围绕“学习投资理财”项目展开学习,通过该项目活动,了解循环的作用,学习如何根据问题的需要选择恰当的循环类型,如何准确设置循环条件和编写循环语句块。
本项目主要包含“计算5年储蓄存款收益”和“计算理财产品收益”两个任务。
任务一 计算5年储蓄存款收益
活动1计算利率不变情况 下的到期存款总额
如果将5万元存入银行,选择“1年定期、自动转存”的存款方式,假设5年内存款利率没有发生变化,均为3.25%,5年后到期存款总额是多少?在程序中,暂不考虑存款分位以下的四舍五入。
活动2计算利率变动情况下的到期存款总额
如果首次存款时的利率是3.25%,自动转存时利率分别是3%、3%、2%、1.75%, 那么5年后到期存款总额是多少?
由于每年的利率不同,如果都存储在变量中,那么需要5个变量,这时可以借助列表来实现。
列表
列表在Python中的作用非常强大,它可以包含多个数据元素,同时它是一个有序的集合。下面通过一个简单的例子来熟悉列表的使用方法。
#创建列表,各元索用逗号隔开,放在方括号内
#列表可以存储混合类型的数据
object=["石榴"?,1,"香蕉","橙子”,"梨子"]
#修改列表第1个元素的值,注意列表索引号从0开始
object[0]="苹果"
del?object[1]#删除列表第2个元素
#在列表尾部添加一-个数据元素”猕猴桃"
object.?append("猕猴桃")
print?(object)#输出列表
运行结果:
['苹果,香蕉,橙子,'梨子,、猕猴桃']
列表相关知识
建立列表:list=[〃You〃, 〃are〃, 〃why〃]
增加元素在列表末尾:list.append(〃friend〃)
插入元素:list.insert(2, 〃my〃)
删除元素:list.remove(〃why〃)
列表逆序:list.reverse()
获取元素:list[索引号],如list[0]为〃You〃。
打印列表:print list
列表排序:list.sort()
计数循环
循环重复次数一-定时,我们通常称为计数循环。在Python中,使用for语句来创建这类循环。for语句的基本格式如下。
for循环变量in列表:
语句或语句组
例子
该例子通过for语句输出列表中的每个元素。
for?i?in?["hello"?,"world"]:
print?(i) #循环体
运行结果:
hello
world
通常我们将一组重复执行的语句称为循环体。Python对循环体约定的格式是,循环体必须相对关键词for有缩进。在本例中,循环体只有一条语句,即print(i)。?循环执行时,依次将列表中的元素赋给i,并且执行循环体(输出i的值),直到整个列表的元素被取完,循环结束。
在for语句中,in后也可以是range()函数,它可以生成某个范围内的数字列表。例如:?range(1,6)就?会生成[1,2,3,4,5]这样一个列表,而range(8)会?生成[0,1,2,3,4,5,6,7]这样一个列表。下面这个循环可以输出0到100的自然数。
for?i?in?range(101): #想想为什么是101
print?(1)
根据前面分析得出的规律,可以使用计数循环来实现每年存款总额的重复计算。循环的次数即为存款的年限。因为银行支付利息计至分位,分位以下四舍五入,所以可以调用round()函数实现保留两位小数。例如,round(1.428,2)的运算结果为1.43。
遵循for语句的格式,完善下列程序代码,实现存款总额的计算。
money= #本金50000元
rate= #利率列表
for
#计算每年存款总额
print("5年以后存款总额:“?,?money,?"元"?) #输出结果
很多银行人民币理财产品的收益高于同期定期存款,但是高收益往往伴随高风险,因此很多普通投资者会选择收益相对稳定、风险较低的保证收益型理财产品。
任务二?计算理财产品收益
某投资者购买了10万元一年期收益率3.7%的銀行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少年后本金被全部取出?
理财一年到期赎回,投资者取出2万元。即money-?round(money*(1+0.037),2)-20000。重复执行该语句,就可以计算连续若千年后的资金余额。但投资多少年是未知的,即循环的次数无法确定,因此使用计数循环不太合适。这时可以考虑使用条件循环来解决该问题。
四、条件循环
条件循环一般用于循环次数未知的情况。只有当循环条件成立时,才执行循环体。在Python中,?使用while语句来创建这类循环。
while语句的基本格式如下。
while关系表达式:
语句或语句组
例如:
s=0
while?S<=30:
5=5+10
#循环体
print(s) #循环体
运行结果:
0
20
30
10
在本例中,循环体是两条语句,因此这两条语句相对于关键词while均要缩进。程序执行过程是:变量s初值为0,判断“s<=30"是否成立;如果成立则执行循环体( s值增加10,输出s的值),不断重复直到“s<=30" 不成立,退出循环。
在此我们需要特别关注语句“s=s+10" 。在编程时,形如“s=s+x”的语句可以起到累加的作用,如果x=1,即s=s+1 可以起到计数的作用。一般在使用累加器或计数器时将变量赋初值为0。
也有一类特殊的关系表达式,如数字0表示假,非0数字表示真。如.果循环是以“while 1:”开头,那么在不加干预的情况下,程序就会“不知疲倦”地一-直执行下去。如果你想停止这个程序,按快捷键Ctrl+C即可。通常情况下,我们不会让程序陷入这种“死循环”的境地。
例子
在计算新的理财金额时,“本金 未被全部取出”可以作为循环的条件。遵循while语句的格式,完善下列程序代码,实现理财年数和金额的计算。
money=100000 #本金00000元
year=_ #理财年数赋初值为0
While #计算新的理财金额#理财年数加1
print(year ,"年后资金被全部取出") #输出结果
五、调试程序
编写程序时难免会出现错误,这时可以借助Python的调试器pdb。例如在程序开头加入语句“import pdb”,然后,在适当的位置放一个“pdb.set_ trace0)" ,就可以设置一个断点,让程序暂停运行,进入pdb调试环境。这时我们可以用命令“p” 查看变量,用命令“c” 继续运行,用命令“q” 结束调试,退出程序。
在程序的第一句增加“import pdb”,while循 环的语句组最后一句增加“pdb.set frace0",观察调试结果是否如下所示。
> d:\理财.py(4)()
-> while money>=0:
(Pdb) P money ,year
(83700.0, 1)
(Pdb) C
> d:\理财. py(4)()-> while money>=0:
(Pdb) p money,year(66796.9, 2)
(Pdb) q
六、拓展练习
1.在任务二中,投资人投入多少钱可以恰好在第10年取完最后- -次2万元?2.某一年期理财产品实际收益率为4.25%,由于产品一直在持续运作,投资者不按时赎回视为自动再投资。在收益率不变的情况下,至少多少年后投资可以翻倍?
2.运行程序,反复要求输入验证码,直到输入为888为止。
参考答案:
pwd=0
while pwd!="888":
pwd=input("请输入正确的验证码:")
3.某1年期理财产品实际收益率为4.25%,由于产品一直在持续运作,投资者不按时赎回视为自动再投资。在收益率不变的情况下,至少多少年后投资可以翻倍?
参考答案:
money=100000
year=0
while money<200000:
money=round(money*(1+0.0425),2)
year=year+1
print(year,"年后资金翻倍")
4.百变符号
活动:输出图形
活动描述:在屏幕输出如下图形。
@
@@
@@@
@@@@
@@@@@
@
@@@
@@@@@
@@@@@@@
@@@@@@@@@
@
@@@
@@@@@
@@@@@@@
@@@@@@@@@
@@@@@@@
@@@@@
@@@
@
直角三角形
等腰三角形
菱形

参考代码:
直角三角形
for i in range(5):
print('@'*(i+1))
等腰三角形
for i in range(5):
print(' '*(5-i),'@'*(2*i+1))
菱形
for i in range(5):
print(' '*(5-i),'@'*(2*i+1))
for i in range(4):
print(' '*(2+i),'@'*(7-2*i))
练习题
求1+22+32+……+1002的结果
total=0
for i in range(1,101):
total=total+i*i
print(total)
input("运行完毕,请按回车键退出...")
输入若干个正整数,以0结束,输出这若干个数中的最大数。
num=int(input("请输入正整数,以0结束:"))
total=0
while num!=0:
total=total+num
num=int(input("请输入正整数,以0结束:"))
print(total)
input("运行完毕,请按回车键退出...")
【教学反思】