1、2.3 2.3 周而复始的循环周而复始的循环(一)(一)第一课时 活动1 计算利率不变情况下的到期存款总额 如果将5万元存入银行,选择“1年定期、自动转存”的存款方式,假设5年内存款利率没有发生变化,均为3.25%,5年后到期存款总额是多少?在程序中,暂不考虑存款分位以下的四舍五入。第1年 50000*(1+0.0325)=51625第2年 51625*(1+0.0325)=50000*(1+0.0325)*(1+0.0325)=50000*(1+0.0325)2第3年 50000*(1+0.0325)3第4年 50000*(1+0.0325)4第5年 50000*(1+0.0325)5 程序
2、代码:p=50000#本金50000元 rate=0.0325#1年定期利率3.25%year=5#存款期限 money=p*(1+rate)*year#计算存款总额 print(5年以后存款总额:,money,元)#输出结果 input(运行完毕,请按回车键退出.)活动2 计算利率变动情况下的到期存款总额 如果首次存款时的利率是3.25%,自动转存时利率分别是3%、3%、2%、1.75%,那么5年后到期存款总额是多少?由于每年的利率不同,如果都存储在变量中,那么需要5个变量,这时可以借助列表来实现。整整 数数 int浮点数浮点数 float字符串字符串 str列列 表表 list列表可以包含
3、多个数据元素,它是一个有序的集合。列表可以包含多个数据元素,它是一个有序的集合。创建列表,创建列表,放在方括号内,各元素用逗号隔开。各元素用逗号隔开。a=“石榴石榴”,1,”香蕉香蕉”,”橙子橙子”,”梨子梨子”列表可以存储列表可以存储混合类型混合类型的数据的数据列表索引号列表索引号从从0 0开始开始a0a1 a2a3a4a=“石榴石榴”,1,”香蕉香蕉”,”橙子橙子”,”梨子梨子”a0=”苹果苹果”a=“苹果苹果”,1,”香蕉香蕉”,”橙子橙子”,”梨子梨子”del a1a=“苹果苹果”,”香蕉香蕉”,”橙子橙子”,”梨子梨子”#修改列表第修改列表第1个元素个元素#删除删除列表第列表第2个元
4、素个元素a.append(“猕猴桃猕猴桃”)#在列表尾部添加一个数据元素在列表尾部添加一个数据元素“猕猴桃猕猴桃”a=“苹果苹果”,”香蕉香蕉”,”橙子橙子”,”梨子梨子”,”猕猴桃猕猴桃”print(a)#输出列表输出列表已知列表已知列表x=1,2,3,4x=1,2,3,4,那么执行语句,那么执行语句del x1del x1之后之后x x的值为(的值为()A.2,3,4A.2,3,4B.1,2,3,4B.1,2,3,4C C.1,3,4.1,3,4D.2,3,4D.2,3,4找规律 用列表表示各年的利率,即rate=0.0325,0.03,0.03,0.02,0.0175。那么存款总额的计算
5、公式是:本金*(1+rate 0)*(1+rate 1)*.*(1+rate4)。存款期限越长,公式就越复杂。有没有其他解决方法呢?请分析每年的存款变化,从中寻找规律。第1年 存款总额=本金*(1+第1年利率)第2年 存款总额=上一年存款总额*(1+第2年利率)第3年 存款总额=上一年存款总额*(1+第3年利率)第n年 存款总额=上一年存款总额*(1+第n年利率)循环结构循环就是重复地执行某些语句。程序中的循环次数是有限的,由循环条件决定可以确定循环次数。python提供了2种循环结构语句:for语句 while语句计数循环(for循环)循环重复次数一定时我们通常称为计数循环 在python中
6、,使用for语句来创建这类循环。格式:举个例子:for i in hello,world:print(i)#循环体input(运行完毕,请按回车键退出.)在本例中,循环体只有一条语句,即print(i)。循环执行时,依次将列表中的元素赋给i,并且执行循环体(输出i的值),直到整个列表的元素被取完,循环结束循环体:重复执行的语句。循环体必须相对关键字 for有缩进。(4个空格或一个Tab键for 循环变量循环变量 in 列表列表语句或语句组语句或语句组循环次数 根据前面分析得出的规律,可以使用计数循环来实现每年存款总额的重复计算。循环的次数即为存款的年限。遵循for语句的格式,完善下列程序代码。
7、money=50000#本金50000元 rate=0.0325,0.03,0.03,0.02,0.0175#利率列表 for i in rate:money=round(money*(1+i),2)#计算每年存款额 print(5年以后存款总额:,money,元)#输出结果 input(运行完毕,请按回车键退出.)因为银行支付利息计至分位,分位以下四含五入,所以可以调用round()函教实现保留两位小数。例如,round(1.428,2)的运 算结果为1.43。很多银行人民币理财产品的收益高于同期定期存款,但是高收益往往伴随高风险,因此很多普通投資者会选择收益相对稳定、风险较低的保证收益型理
8、财产品。0,1,2,3,4,5数字数字05列表列表数字数字0100列表列表?range()在for语句中,in后也可以是range()函数,它可以生成某个范围内的数字列表。range()函数可以创建一个整数列表函数可以创建一个整数列表range()函数语法:函数语法:range(start,stop,step)计数从计数从start开始开始(默认是默认是0),到到stop结束,但不包括结束,但不包括stop,step步长默认为步长默认为1。range(5)range(0,5,1)0,1,2,3,4#从从0开始到开始到5,步长为,步长为1range(1,4)1,2,3range(0,20,5)0
9、,5,10,15range(10,0,-2)10,8,6,4,2列表列表range(7,10)range(7,10)中元素的个数是(中元素的个数是()A.7A.7B.B.3 3C C.4.4D.10D.10B B下列代码中循环体执行的次数是(下列代码中循环体执行的次数是()for i in range(1,5):for i in range(1,5):print(i)print(i)A.1A.1B.2B.2C C.4.4D.5D.5C C下面程序段运行后显示的结果是(下面程序段运行后显示的结果是()s=0for i in range(6):s=s+iprint(s)A.10B.15C.20D.
10、25Bs=0i=0s=0i=1s=1i=2s=3i=3s=6i=4s=10i=5s=15以下是s=1+2+3+100的程序代码,请补全程序。s=0range(1,101):s=s+i以下是s=1*2*3*100的程序代码,请补全程序。s=1range(1,101):s=s*i执行下列程序后的结果是()s=0for i in range(1,5):i=i+2s=s+iprint(s)A.15B.10C.18D.8s=0i=1i=3s=3i=2i=4s=7i=3i=5s=12i=4i=6s=18C C 2.3 2.3 周而复始的循环周而复始的循环第二课时 While 循环 回顾旧知,并运用 例一:
11、例一:s=0 for i in range(101):s=s+i print(s)例二:例二:m=1for i in range(1,11):m=m*2*iprint(m)思考:思考:(1)m、s的初值为什么分别设为的初值为什么分别设为1和和0?(2)range在程序中起了什么作用?在程序中起了什么作用?循环1.概念:计算机程序中某些代码的反复执行2.分类:重复一定次数(for):重复到某种情况结束 (while)条件循环 只有当循环条件成立时,才执行循环体。在Python中,使用来创建这类循环。while语句的基本格式如下。一组重复执行的语句称为一组重复执行的语句称为循环体循环体。循环体循环
12、体必须相对关键词必须相对关键词while有有缩进缩进。思考:怎么用while循坏替代?一、一、while语句格式及功能语句格式及功能 while 语句格式语句格式 while 关系表达式关系表达式:语句或语句组语句或语句组例例3:s=0while s=30:s=s+10#循环体循环体print(s)#循环体循环体累加器累加器 由于while循环不记录循环的次数,如果需要借用循环次数信息,必须在代码中增加计数器,并通过语句修改计数器的值,这也是while循环的难点。练习时刻求1+2+3+100:s=0i=1while i=100:s=s+i i=i+1#print(s)print(s)for 循
13、环while循环脑子里是不是其实已经下意识地算出循环的次数为100 那如果我们算不出循环的次数呢?问:s=1+3+5+累加到几的和刚好大于30?一般用于 循环次数未知的情况。_while _:_ _print(i)s=0i=0s23.9输出“XX一点也不胖”YNNn=0Yn=n+1n100计数循环条件循环课堂小结及相关常见的:重复一定次数for (循环次数确定):重复到某种情况结束 while (循环次数确定/不确定)练习时刻1.下面程序段运行后显示的结果为()i=1while i8:i=i+2 s=2*i+3print(s)A.17B.19D.23i=1while i8:s=2*i+3 i=
14、i+2print(s)CA练习时刻2.下面Python程序段的运行结果是()i=0sum=0while i=0:money=round(money*(1+0.037),2)-20000year=year+1练习时刻4.完善程序,打印对联。(对联.py)上联:“国泰民安”,下联:“万象更新”,横批:“欢度国庆”。参考答案:listup=国,泰,民,安listdown=万,象,更,新listrow=欢度国庆print(,listrow)for i in range(4):print(listupi,listdowni)提示:上联、下联用字符串存储也可以。如:listup=国泰民安。拓展练习调试程序
15、调试程序 调试器调试器pdb 模块模块 例如例如 importpdb pdb.set_trace()运行后运行后”p”命令查看变量命令查看变量 运行后运行后”c”命令继续运行命令继续运行 运行后运行后”q”命令退出程序命令退出程序某投资者购买了某投资者购买了10万元一年期收益率万元一年期收益率3.7%的的银行保证收益型理财产品。每年理财赎回后,银行保证收益型理财产品。每年理财赎回后,他会提取他会提取2万元用作生活所需,余下资金仍购万元用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少买此种理财。在收益率不变的情况下,多少年后本金被全部取出?年后本金被全部取出?计算收益思考:和上节
16、课存钱例题比较,差异在哪里?思考:和上节课存钱例题比较,差异在哪里?例如:求和1+2+3+100=?for 循环程序s=0for i in range(101):s=s+iprint(s)while循环程序循环程序s=i=while i=0,本金可以用常数表示,也可以存入变量增加程,本金可以用常数表示,也可以存入变量增加程序的通用性。序的通用性。由于需要知道年数,因此必须增加计数器。由于需要知道年数,因此必须增加计数器。实践:尝试补充代码 P38money=#本金本金100000year=#理财年数赋初值为理财年数赋初值为0while#计算新的理财金额计算新的理财金额#理财年数加理财年数加1print(year,年后资金被全部取出年后资金被全部取出)#输出结果输出结果input(运行完毕,请按回车键退出运行完毕,请按回车键退出.)for循环嵌套:尝试打印出九九乘法表