资源简介 2.3周而复始的循环 学 习 目 标 循环:计算机程序中某种代码的反复执行,称为循环。(P34) Python中的循环: 重复一定次数的计数循环 重复到某种情况结束的条件循环 问题: 计算5年储蓄存款收益 小明爸爸有5万元积蓄存入银行,考虑到在存续期间可能会有其他用途,因此他选择了1年定期,自动转存的方式。5年后他会有多少收益呢? 问题: 计算利率不变情况下到期存款总额 如果小明爸爸选择1年定期自动转存,假设5年内存款利率没有发生变化均为3.25%,5年后到期存款总额是多少? 计算5年储蓄存款收益 本金*(1+利率)存款期限 分析每年的存款变化,从中寻找规律。 第1年 存款=本金*(1+第1年利率) 第2年 存款=上一年存款*(1+第2年利率) 第3年 存款=上一年存款*(1+第3年利率) ...... 第n年 存款总额= 你发现其中规律了吗? 计算利率变动情况下到期存款总额 如果小明爸爸首次存款利率是3.25%,自动转存时利率分别是3%、3%、2%、1.75%,那么5年后到期存款总额是多少? 计算5年储蓄存款收益 分析每年的存款变化,从中寻找规律。 第1年 存款=本金*(1+第1年利率) 第2年 存款=上一年存款*(1+第2年利率) 第3年 存款=上一年存款*(1+第3年利率) ...... 第n年 存款总额= 每年利率都不同, 可以借助列表实现。 列表 列表在Python中作用非常强,列表可以包含多个数据元素,同时它是一个有序的集合。下面先来看一个简单的例子,熟悉列表的使用方法。 #创建列表,各元素用逗号隔开,放在方括号内 #列表可以存储混合类型的数据 object=["石榴",1,"香蕉","橙子","梨子"] #修改列表第1个元素的值,注意列表索引号从0开始 object[0]="苹果" del object[1] #删除列表第2个元素 #在列表尾部添加一个数据元素”弥猴桃" object. append("猕猴桃") print (object) #输出列表 运行结果: ['苹果','香蕉','橙子','梨子',' 猕猴桃'] 列表(练习) a=[1,2,3] #创建列表,各元素用逗号隔开,放在方括号内 #修改列表第一个元素的值为4,注意列表的索引号从0开始 #删除列表第二个元素 #在列表尾部添加一个数据元素2 print (a) #打印列表 运行结果: [4, 3, 2] a[0]=4 del a[1] a.append(2) 拓展:Python中创建列表的方法 1.赋值运算符直接创建列表 用赋值运算符“=”直接将一个列表赋值给变量, 其中,listname 表示列表的名称,“element 1,element 2,"",element n”表示列表中的元素,个数没有限制,且只要是Python支持的数据类型就可以。可以将不同类型的数据放入到同一个列表中,但是通常情况下,我们不这样做,而是在一个列表中只放入一种类型的数据。这样可以提高程序的可读性。 2.创建空列表 在Python中,也可以创建空列表,如:emptylist = [] 3.创建数值列表 使用list() 函数直接将range()函数循环出来的结果转换为列表。 其中,data表示可以转换为列表的数据,其类型可以是range对象、字符串、元组或其他可迭代类型的数据。 如 建一个10-20之间(不包括20)所有偶数的列表,list(range(10, 20, 2)) 运行结果: [10, 12, 14, 16, 18] 4.删除列表 对于已经创建的列表,不再使用时,可以使用del语句将其删除。 listname为要删除列表的名称。 拓展:Python中创建列表的方法 拓展知识 建立列表:list=[〃You〃, 〃are〃, 〃why〃] 增加元素在列表末尾:list.append(〃friend〃) 插入元素:list.insert(2, 〃my〃)(列表的第三个位置插入”my”) 获取元素:list[索引号],如list[0]为〃You〃。 修改元素:list[1]=〃is〃 列表排序:list.sort() (升序) 列表逆序:list.reverse()(降序) 删除元素:list.remove(〃why〃) 删除列表:del listname/del listname[-1](删除最后一个元素) 打印列表:print list 计数循环(P36) 语句格式 for i in ["hello","world"]: print (i) # 循环体 运行结果: hello world 循环重复次数一定时,我们通常称为计数循环。Python中用for语句来创建这类循环。 一组重复执行的语句称为循环体。 Python对循环体约定格式是,循环体必须相对关键词for有缩进。 round()函数实现保留两位小数。 例如,round(1.428,2)的运算结果为1.43。 计数循环(P36) 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): print (i) #想想为什么是101 计算利率不变情况下到期存款总额 如果小明爸爸选择1年定期自动转存,假设5年内存款利率没有发生变化均为3.25%,5年后到期存款总额是多少? 计算5年储蓄存款收益 本金*(1+利率)存款期限 1.循环体:每年到期存款总额 存款总额money=存款本金money*(1+年利率) 2.循环次数:存款年限5次。可用[1,2,3,4,5]或range(1,6)或range(5)。 3.循环变量:年。可以用year表示。 for year in [1,2,3,4,5]: money=money*(1+rate) 效果等同于money=money*(1+rate)**5 思考: 循环体、循环次数、循环变量分别是什么? 年利率rate固定不变,输入本金money,五年后总额为: 计算利率变动情况下到期存款总额 如果小明爸爸首次存款利率是3.25%,自动转存时利率分别是3%、3%、2%、1.75%,那么5年后到期存款总额是多少? 计算5年储蓄存款收益 50000 [0.0325,0.03,0.03,0.02,0.0175] i in rate: money=round(money*(1+i),2) 思考: 循环体、循环次数、循环变量分别是什么? 1.循环体:每年到期存款总额 存款总额money=存款本金money*(1+年利率) 2.循环次数:存款年限5次 3.循环变量:利率。变量名i 。既能保证循环次数为5次,又能让利率rate每年变化。 多少年资金全部取出 小明爸爸购买了10万元一年期收益率3.7%的银行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少年后本金被全部取出? 计算理财产品收益 money= round(money* (1+0.037),2)-20000 循环次数? 条件循环 条件循环一般用于循环次数未知的情况。只有当循环条件成立时,才执行循环体。在Python中,使用while语句来创建这类循环。 例如: s=0 while S<=30: S=S+10 #循环体 print(s) #循环体 运行结果: 10 20 30 40 例中,循环体是两条语句,因此这两条语句相对于 关键词whil均要缩进。 程序执行过程是:变量s初值为0,判断“s<=30" 是否成立:如果成立则执行循环体( s值增加10,输出s的值), 不断重复直到“s<=30”;不成立,退出循环。 形如"s=s+x"”的语句可以起到累加的作用, 如果x=1,即s=s+1可以起到计数的作用。 一般在使用累加器或计数器时将变量赋初值为0。 也有一类特殊的关系表达式,如数字0表示假, 非0数字表示真。如果循环是以“while 1:"开头, 那么在不加干预的情况下,程序就会“不知疲倦” 地一直执行下去。如果你想停止这个程序, 按快捷键Ctrl+C即可。通常情况下, 我们不会让程序陷人这种“死循环”的境地。 S=S+10 多少年资金全部取出 小明爸爸购买了10万元一年期收益率3.7%的银行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少年后本金被全部取出? 计算理财产品收益 0 money>=0: money=round(money*(1+0.037),2)-20000 year=year+1 思考: 循环控制条件、循环体分别是什么?是否需要计数器,若需要怎样设置? 1.循环体: money=round(money*(1+0.037),2)-20000 year=year+1 2.循环控制条件:money>0。本金可以用常数表示,也可以存入变量增加程序的通用性。 3.需要知道年数,必须增加计数器:year=year+1 调试程序 借助Python的调试器pdb.如 程序开头加入语句“import pdb", 适当的位置放一"pdb.set-trace()" ,设置一个断点,让程序暂停运行,进入pdb调试环境。 用命令“p”查看变量,用命令“c” 继续运行,用命令“q"” 结束调试,退出程序。 在程序的第一句增加“import pdb",while循环的语句组最后一句增加"pdb.set-trace()" ,观察调试结果是否如下所示 > 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 周而复始的循环 总结 A B 计数(for)循环(格式、循环次数的设置方法) C 条件(while)循环(格式、循环控制条件的设置方法) D 调试程序 展开更多...... 收起↑ 资源预览