内容正文:
《Python应用程序设计》
Python for循环嵌套
计算机教科组
1
循环嵌套
在程序开发过程中,有时会需要在一个循环体内再出现循环,即循环的嵌套。 Python中允许在一个循环体内嵌入另一个循环,可以是for循环嵌套,或者 while循环嵌套,也可以是for循环与 while交叉嵌套。
for循环嵌套
for 变量1 in 遍历序列1:
for 变量2 in 遍历序列2:
语句块2
语句块1
while循环嵌套
while 条件表达式1:
while 条件表达式2:
语句块2
语句块1
循环嵌套
以下代码运行结果是什么?
for x in "ABC":
for y in "12":
print(x + y)
执行分析:
先执行第一次外循环,x=A
执行内循环,第一次y=1,打印A1
执行内循环,第二次y=2,打印A2
先执行第二次外循环,x=B
执行内循环,第一次y=1,打印B1
执行内循环,第二次y=2,打印B2
先执行第三次外循环,x=C
执行内循环,第一次y=1,打印C1
执行内循环,第二次y=2,打印C2
循环嵌套
for i in range(2):
for j in range(2):
print(i, j)
循环嵌套
例题1.以下程序的运行结果是( )。
for i in range(3):
for j in range(1,3):
t=i+j
print(t)
A.1 B.2 C.4 D.6
答:C.最后一次i=2,j=2,输出最后的s=2+2=4
循环嵌套
例题2.以下程序的运行结果是( )。
s=0
for i in range(3):
for j in range(1,3):
t=i+j
s=s+t
print(s)
A.3 B.6 C.9 D.15
i=0时,j=1,t=i+j=0+1=1,s=1
j=2,t=i+j=0+2=2,s=s+t=1+2=3
i=1时,j=1,t=i+j=1+1=2,s=s+t=3+2=5
j=2,t=i+j=1+2=3,s=s+t=5+3=8
i=2时,j=1,t=i+j=2+1=3,s=s+t=8+3=11
j=2,t=i+j=2+2=4,s=s+t=11+4=15
循环嵌套
例题3.以下程序的运行结果是( )。
s=0
for i in range(3):
for j in range(1,3):
t=i+j
s=s+t
print(s)
A.3 B.6 C.9 D.15
i=0时,j=1,t=i+j=0+1=1,
j=2,t=i+j=0+2=2,s=s+t=0+2=2
i=1时,j=1,t=i+j=1+1=2,
j=2,t=i+j=1+2=3,s=s+t=2+3=5
i=2时,j=1,t=i+j=2+1=3,
j=2,t=i+j=2+2=4,s=s+t=5+4=9
循环嵌套
例题4.以下程序的运行结果是?
lst=[]
for i in (1,3):
for j in (1,4):
t=i+j
lst.append(t)
print(lst)
i=1,j=1,t=i+j=1+1=2,列表变为[2]
j=4,t=i+j=1+4=5,列表变为[2,5]
i=3,j=1,t=i+j=3+1=4,列表变为[2,5,4]
j=4,t=i+j=3+4=7,列表变为[2, 5, 4, 7]
循环嵌套
计算1!+2!+3!+...+20!
s=0
for i in range(1,21):
t = 1
for j in range(1,i+1):
t = t * j
s=s+t
print(s)
鸡兔同笼问题
[例2]鸡兔同笼。假设共有鸡、兔30只,脚90只,求鸡、兔各有多少只?
for x in range(1,31):
for y in range(1,31):
if x+y==30 and 2*x+4*y==90:
print(f'鸡{x},兔{y}')
运行结果:鸡15,兔15
【备注】不需要列