资源简介 2.3 周而复始的循环 【学科核心素养】 能够根据解决问题的需要,自觉、主动地寻求恰当的方式处理信息。(信息意识) 通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案。(计算思维) 掌握数字化学习工具的操作技能。(数字化学习与创新) 能够遵守信息法律法规,信守信息社会的道德与伦理准则。(信息社会责任) 【课程标准要求】 掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。 【学业要求】 依据解决问题的需要,设计和表示简单算法;掌握一种程序设计语言的基本知识,利用程序设计语言实现简单算法,解决实际问题(计算思维)。 【学情分析】 学生在前面的课中已经学习了基本的赋值语句和分支语句,对于编写程序解决问题的一般流程已经比较熟悉,但学生对循环语句应该没有基础。 【学习目标】 了解循环的概念。 掌握for、while循环的一般格式。 掌握for循环中循环次数的设置方法。 掌握while循环中循环控制条件的设置方法。 了解列表的功能及常见操作。 了解利用for、while语句解决问题的一般过程。 尝试利用for、while循环解决简单问题。 【教学重点】 for 循环的工作原理。 【教学难点】 循环变量的设计及引用。 【教学过程】 第一课时 引入 由于很多家庭都会有富余的资金,因此理财对大家来说都不陌生。可是市场上理财方式很多,如下图的各种宣传广告。让我们通过一些案例,对这些理财方式进行了解。 银行理财广告 练习1:有5万元资金存入银行,选择“1年定期、自动转存”的存款方式。5年后会有多少收益呢?(假定利率为3.25%) 参考答案: money=50000*(1+0.0325)**5 练习2:由于银行利率是不断变化的,这5年利率分别是3.25%、3%、3%、2%、1.75%, for 语句格式及功能 循环:计算机程序周而复始地重复同样的步骤,称为循环。 for功能:重复一定次数的循环 循环次数由谁决定。 1.直接规定,如 [1,2,3,4]、range(1,5)、range(10)。(其实这些也是列表 ) 2.关于range的说明:默认从0开始,左闭右开。 由字符串长度、列表中元素个数决定。如 “花开四季” 、[〃hello〃, 〃world〃] 列表就是用“[]”将数据集中存放,便于记录和处理。使用中括号指出从哪里开始,到哪里结束,另外用逗号分隔列表中的各项。列表中可以包含python中能存储的任何类型的数据。如: List=[5,10,15, 〃a〃, 〃b〃, 〃c〃,true ,false] (其实 [1,2,3,4]、range(1,5)这些也是列表 ) for格式 for 循环变量 in 列表: 语句或语句组 例1:for ch in [〃hello〃, 〃world〃]: print (ch) 例2:for i in range(101): Print (i) For语句原理 (师生共同归纳)循环变量的值从列表中第一个数开始,对应列表中的每一个值,循环把语句组A中的所有工作执行一次,执行完成后,循环变量赋为列表中的下一个值。 应用for语句解决练习2 1.一般流程:首先考虑需要重复执行的部分是什么,然后考虑需要循环多少次或由谁决定循环次数。 (1)需要重复执行的部分:计算每年到期存款总额 存款总额money=存款本金money*(1+年利率) 循环次数:5次。可用[1,2,3,4,5]或range(1,6)或range(5)。 假设年利率rate固定不变,输入本金money,五年后总额为: for year in [1,2,3,4,5]: money=money*(1+rate) 效果等同于money=money*(1+rate)**5 2.身兼数职的循环变量:循环变量除了能反映for循环目前执行到第几个数或执行到哪个数之外,在解决实际问题的过程中,往往会借助循环变量存储的信息进行计算。 5年利率分别是3.25%、3%、3%、2%、1.75%。在这里,需要重复执行的部分没变,循环次数也没有变化,所不同的地方是年利率rate每个年度会更新一次。根据for循环的格式,如何既能保证循环次数为5次,又能让利率rate每年变化呢?只需将rate作为循环变量就可以了。 for rate in [0.0325,0.03,0.03,0.02,0.0175]: money=money*(1+rate) 列表中记录5个年度对应的年利率,rate作为循环变量把不同的利率都计算一遍,同样完成了5年存款总额的计算。 练习3:某投资者购买了10万元一年期收益率3.7%的银行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。3年后还剩多少存款?提示:money=money*(1+rate)-20000 列表相关知识 建立列表:list=[〃You〃, 〃are〃, 〃why〃] 增加元素在列表末尾:list.append(〃friend〃) 插入元素:list.insert(2, 〃my〃) 删除元素:list.remove(〃why〃) 列表逆序:list.reverse() 获取元素:list[索引号],如list[0]为〃You〃。 打印列表:print list 列表排序:list.sort() 练习 1.输入5个数,分别完成以下操作: (1)按照次序逆序输出;提示:list.reverse() (2)从小到大输出。提示:list.sort() 参考答案: list=[] for i in range(5): x=input("请输入第"+str(i+1)+"个数据:") list.append(x) list.reverse() print(list) list.sort() print(list) 2.完善程序,打印对联。上联:“国泰民安”,下联:“万象更新”,横批:“欢度国庆”。 参考答案: listup=["国","泰","民","安"] listdown=["万","象","更","新"] listrow="欢度国庆" print(" ",listrow) for i in range(4): print(listup[i]," ",listdown[i]) 提示:上联、下联用字符串存储也可以。如:listup="国泰民安"。 第二课时 知识回顾 练习1:阅读下列程序,写出程序运行结果。 s=0 for i in range(101): s=s+i print(s) m=1 for i in range(1,11): m=m*2*i print(m) 思考: (1)m、s的初值为什么分别设为1和0? range在程序中起了什么作用? 练习2:某投资者购买了10万元一年期收益率3.7%的银行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少年后本金被全部取出? 思考:和上节课的练习3比较,差异在哪里? while语句格式及功能 while 语句格式 while 关系表达式: 语句或语句组 While循环功能:不统计需要执行多少次循环,而是使用一个关系表达式来确定什么时候执行循环。当关系表达式为真时一直保持循环,直到其不为真时停止完成整个while循环。 例1: s=0 while s<=30: s=s+10 # 循环体 print(s) # 循环体 while循环编程关键点 (1)和for循环类似,首先要考虑需要循环执行的部分。 (2)考虑执行循环的条件。 (3)由于while循环不记录循环的次数,如果需要借用循环次数信息,必须在代码中增加计数器,并通过语句修改计数器的值,这也是while循环的难点。如: for 循环 s=0 for i in range(101): s=s+i print(s) while循环 s=0 i=1 while i<=100: s=s+i i=i+1 print(i) 利用while循环解决练习2 分析: 需要重复执行的部分: money=round(money*(1+0.037),2)-20000 year=year+1 循环控制条件:money>0,本金可以用常数表示,也可以存入变量增加程序的通用性。 是否需要记录循环次数?由于需要知道年数,因此必须增加计数器。 根据以上分析,可拼合程序: money=100000 year=0 while money>=0: money=round(money*(1+0.037),2)-20000 year=year+1 print(year,"年后资金被全部取出") 练习 1.运行程序,反复要求输入验证码,直到输入为888为止。 参考答案: pwd=0 while pwd!="888": pwd=input("请输入正确的验证码:") 某1年期理财产品实际收益率为4.25%,由于产品一直在持续运作,投资者不按时赎回视为自动再投资。在收益率不变的情况下,至少多少年后投资可以翻倍? 参考答案: money=100000 year=0 while money<200000: money=round(money*(1+0.0425),2) year=year+1 print(year,"年后资金翻倍") 总结与评价 循环语句的格式和作用。 展开更多...... 收起↑ 资源预览