4.3运用循环结构描述问题求解过程
4.4.1 for循环的应用
复习巩固
1.单分支if语句
格式:
if (条件表达式):
语句A
执行过程:
2.双分支if结构
格式:
if (条件表达式):
语句A
else:
语句B
①if(条件表达式)后面加冒号“:”,else语句后也要加冒号“:”。
②当语句A和语句B是由多个语句构成的复合语句时,所有语句严格遵循相同的缩进。(通常使用tab键来缩进)
探究活动
这个问题相当于要计算从1到10的累加值。1到10的累加就是计算1+2+…+10,可以用什么结构来编程解决?
分析问题
for循环语句的一般格式 :
for 循环变量 in 列表:
语句或语句组
for循环依次把列表中的每个元素逐个迭代出来。冒号“:”代表下一行是循环的第一行,但是循环体在书写时需要缩进。在for循环中,从for语句末尾的冒号开始到其下面没有缩进代码之间都是其包含的需要重复执行的部分(循环体)。因此,for循环所包含的语句是以缩进为标志的。
For循环结构
感受格式缩进
列表的表达方式一
直接罗列的方式
for value in [1,2,3,4,5]:
print(value)
Print(“good”)
列表的表达方式二
先定义后使用
列表的表达方式三
使用range()函数
range()函数是让python从指定的第一个值开始数,并在到达所指的第二个值后停止,因此不包含第二值。
如range(1,6)其实是生成一个1-6的整数(不包含6)
当然,使用range()函数时,数值列表也可以降序的,如range(10,1,-2)就是生成10至2的偶数(降序),具体如表4-13所示。
问题解决
现在我们一起来解决上课之前的问题?
设计算法
根据前面的分析,可设计如下算法:需要有一个循环变量从1变化到10,将该变量命名为i;还需要另一个临时变量不断和该变量进行加法运算,并记录运算结果,将临时变量命名为sum;变量i每增加1时,就和变量sum进行一次加法运算,变量sum记录的是累加的结果。该算法流程图如右图所示。
编写程序
方法一:列表直接罗列
sum=0
for i in [1,2,3,4,5,6,7,8,9,10]:
sum=sum+i
print(sum)
方法二:列表先定义后使用
a=[1,2,3,4,5,6,7,8,9,10]
sum=0
for i in a:
sum=sum+i
print(sum)
方法三:使用range()函数
sum=0
for i in range(1,11):
sum=sum+i
print(sum)
方法四:使用range()函数,数值列表降序且定义步长
sum=0
for i in range(10,0,-1):
sum=sum+i
print(sum)
随堂练习
有以下程序段:
sum=1
for i in range(1,5):
sum=sum*i
print(sum,i)
程序的运行结果为( )
A. 24 5 B. 120 5 C. 24 4 D. 120 4
C
循环控制
循环控制包含控制变量的变化方式和控制循环的跳转。无论是for循环
还是while 循环,都需要一个控制循环的变量来控制循环的执行。但是
,有些循环仅靠循环变量自身的变化难以达到想要的控制效果,因此需要
用到控制循环的跳转语句。实现控制循环的跳转需要用到break和continue
两个关键字。其中,break是中断循环,continue是跳出本次循环体的执行。
break语句
求:1+2+3+4+……+100加到那个数,累加的和首次值超过1000?
sum=0
for i in range(1,101):
sum=sum+i
if sum >1000:
print(“累加到的数是:”,i)
break
print(“累加的和为:”,sum)
continue语句
求:输出字符串“hello python”所有非“o”字符?
a= “hello python”
for i in a:
if i==“o”:
continue
print(“输出当前字符:”,i)
火眼金睛
(1)求1+2+3+4+5的和。
s =1
for i in [1,2,3,4,5]
s = s + i
print s
找出下面程序中的错误并解释:
火眼金睛
(2)求5*4*3*2*1的值。
s =0
for i in range(1,5):
s = s*i
print (s)
找出下面程序中的错误并解释:
火眼金睛
(3)求7*5*3*1的值
s = 1
for i in range(7,0,-2)
s = s*i
print ("s=",s )
找出下面程序中的错误并解释:
学以致用
暑假里假日小队的同学帮助计算居民楼内每户的电费,楼内共有10户居民,每度电0.7元,编一个程序,输入每一户的用电量,然后计算应缴纳的电费输出,再输入下一户的用电量,计算应缴纳的电费……一直重复下去直到全部用户计算完毕。
问题:编程计算出以下每户居民的电费?
1户
3986度
2户
5477度
3户
6561度
4户
8796度
5户
3668度
6户
4712度
7户
8631度
8户
9164度
9户
8157度
10户
1661度
编写程序
问题:编程计算出以下每户居民的电费?
1户
3986度
2户
5477度
3户
6561度
4户
8796度
5户
3668度
6户
4712度
7户
8631度
8户
9164度
9户
8157度
10户
1661度
for i in range(1,11):
a=int(input(“输入户数:”))
b=int(input(“输入用电量:”))
s=0.7*b
print ("%d户,电费 %.2f元”%(a ,s))
小 结
1.for循环的一般格式
2.for循环的缩进
3.for循环的列表表达方式
4.循环的控制