(共23张PPT)
2.3.3语句与程序结构
——循环嵌套
循环结构语句
while 表达式:
语句块
for 循环变量 in 序列: 语句块
循环嵌套
嵌套:将一个物体嵌入另一个物体
循环嵌套:将一个循环嵌入另一个循环。
循环嵌套
while循环
for循环
两种结构相互嵌套
外层循环称为外循环,内层循环称为内循环。
内循环是外循环的循环体。
while 表达式1:
while 表达式2:
语句块
循环嵌套
外循环
内循环
循环体
循环嵌套
外循环
内循环
循环体
while 表达式:
for 循环变量 in 序列: 语句块
循环嵌套
外循环
内循环
循环体
for 循环变量1 in 序列:
for 循环变量2 in 序列: 语句块
循环嵌套
外循环
内循环
循环体
for 循环变量1 in 序列:
while 表达式2:
语句块
循环控制条件
开始
循环体
循环体以外的语句
结束
初始化部分
false
true
外循环控制条件
开始
内循环体
循环体以外的语句
结束
初始化部分
false
true
内循环控制条件
true
false
外循环控制条件
开始
内循环体
循环体以外的语句
结束
初始化部分
false
true
内循环控制条件
true
false
1.当外层循环的条件为True时,则执行外层循环结构中的循环体;
2.当内层循环的条件为True时,则执行此循环中的内循环体,直到内层循环条件为False,跳出内循环;
3.若此时外层循环的条件仍为True,则返回第2步,继续执行外层循环体,直到外层循环的循环条件为False;
4.当内层循环的循环条件为False,且外层循环的循环条件也为False,则整个嵌套循环才算执行完毕。
九九乘法表问题
1、九行九列
2、后一行比前一行多一列
九九乘法表问题
for i in range(1,10): #控制行,生成[1,2,3,4,5,6,7,8,9]
for j in range(1,i+1): #控制列
print(i,"*",j,"=",i*j,"\t",end="")
print()
外
循
环
内
循
环
九九乘法表问题
for i in range(1,10): #控制行,生成[1,2,3,4,5,6,7,8,9]
for j in range(1,i+1): #控制列,生成[1]、[1,2]、[1,2,3]...
print(i, "x",j,"=",i*j,"\t",end="")
print()
①i=1 j=1
1x1=1
②i=2 j=1
2x1=2
2x2=4
,j=2
③i=3 j=1
,j=2
,j=3
3x1=3
3x2=6
3x3=9
鸡兔同笼问题
鸡兔同笼问题,共35个头,94只脚,问鸡、兔各多少只?
设鸡有x只,兔有y只。
x+y=35
2x+4y=94
x=23
y=12
鸡兔同笼问题
for x in range(1,43):
for y in range(1,43):
if x+y==35 and 2*x+4*y==94:
print("鸡",x,"只,","兔",y,"只")
百钱百鸡问题
用100文钱买100只鸡,其中公鸡5文钱一只,母鸡3文钱一只,小鸡3只1文钱,公鸡、母鸡、小鸡都必须有,问公鸡、母鸡小鸡各买多少只?
设公鸡x只,母鸡y只,小鸡z只
x+y+z=100
5x+3y+3/z=100
百钱百鸡问题
for x in range(1,101):
for y in range(1,101):
for z in range(1,101):
if 5*x+3*y+z/3==100 and x+y+z==100:
print("公鸡",x,"母鸡",y,"小鸡",z)
x=1
y=1
z=1 z=2 …… z=100
x=1
y=2
z=1 z=2 …… z=100
x=1
y=2 y=3 …… z=100
z=1 z=2 …… z=100
x=2
y=1 y=2 …… z=100
z=1 z=2 …… z=100
x=2 y=3 …… z=100
y=1 y=2 …… z=100
z=1 z=2 …… z=100
循环1003次
在循环体中,可以使用break语句continue语句控制程序的流程,break 语句用于终止某个循环,使程序跳到循环体以外的第一个可执行语句。
continue语句用于终止本次循环进入下一次循环,即跳过循环体内还未执行的语句,进入下次循环的判定。
break语句和continue语句
练习,输出九九乘法表的前五行
for i in range(1,10):#控制行
if i==6:
break
for j in range(1,i+1):#控制列
print(i,"*",j,"=",i*j,"\t",end="")
print()