(共15张PPT)
2.3周而复始的循环
1.循环
概念:计算机程序中某些代码的反复执行
循环分为两大类:
计数循环:重复一定次数
条件循环:重复到某种情况结束
2.列表
包含多个数据元素,同时它是一个有序的集合
列表就是用来存储对象的对象,可以将多个对象有序存储
#创建列表,各元素用逗号隔开,放在方括号内
#列表可以存储混合类型的数据
object=["石榴",1,"香蕉","橙子","梨子"]
#修改列表第1个元素的值,注意列表索引号从0开始
object[0]="苹果"
del object[1] #删除列表第2个元素
#在列表尾部添加一个数据元素”弥猴桃"
object. append("猕猴桃")
print (object) #输出列表
运行结果:
['苹果','香蕉','橙子','梨子',' 猕猴桃']
2.列表
建立列表:list=[〃You〃, 〃are〃, 〃why〃]
增加元素在列表末尾:list.append(〃friend〃)
插入元素:list.insert(2, 〃my〃)
删除元素:list.remove(〃why〃)
列表逆序:list.reverse()
获取元素:list[索引号],如list[0]为〃You〃。
打印列表:print list
列表排序:list.sort()
3.计数循环
循环重复次数一定时,我们通常称为计数循环。Python中用for语句来创建这类循环。
for 循环变量 in 列表:
语句或语句组(循环体)
语句格式
for i in ["hello","world"]:
print (i) # 循环体
运行结果:
hello
world
一组重复执行的语句称为循环体。
Python对循环体约定格式是,循环体必须相对关键词for有缩进。
3.计数循环
round()函数实现保留两位小数。
例如,round(1.428,2)的运算结果为1.43。
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
3.计数循环
如果小明爸爸首次存款利率是3.25%,自动转存时利率分别是3%、3%、2%、1.75%,那么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每年变化。
4.条件循环
条件循环一般用于循环次数未知的情况。只有当循环条件成立时,才执行循环体。在Python中,使用while语句来创建这类循环。
s=0
while S<=30:
S=S+10 #循环体
print(s) #循环体
运行结果:
10
20
30
40
4.条件循环
小明爸爸购买了10万元一年期收益率3.7%的银行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少年后本金被全部取出?
0
money>=0:
money=round(money*(1+0.037),2)-20000
year=year+1
5.条件循环的关键点
(1)和for循环类似,首先要考虑需要循环执行的部分。
(2)考虑执行循环的条件。
(3)由于while循环不记录循环的次数,如果需要借用循环次数信息,必须在代码中增加计数器,并通过语句修改计数器的值,这也是while循环的难点。
如:
while循环
s=0
i=1
while i<=100:
s=s+i
i=i+1
print(i)
for 循环
s=0
for i in range(101):
s=s+i
print(s)
6.练习
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)
6.练习
2.完善程序,打印对联。上联:“国泰民安”,下联:“万象更新”,横批:“欢度国庆”。
参考答案:
listup=["国","泰","民","安"]
listdown=["万","象","更","新"]
listrow="欢度国庆"
print(" ",listrow)
for i in range(4):
print(listup[i]," ",listdown[i])
提示:上联、下联用字符串存储也可以。如:listup="国泰民安"。
6.练习
3.运行程序,反复要求输入验证码,直到输入为888为止。
参考答案:
pwd=0
while pwd!="888":
pwd=input("请输入正确的验证码:")
6.练习
4.某1年期理财产品实际收益率为4.25%,由于产品一直在持续运作,投资者不按时赎回视为自动再投资。在收益率不变的情况下,至少多少年后投资可以翻倍?
money=100000
year=0
while money<200000:
money=round(money*(1+0.0425),2)
year=year+1
print(year,"年后资金翻倍")
thanks!
谢谢