嵌套是指一个对象中包含另一个与它相似的对象。
俄罗斯套娃就是典型的嵌套,一个套娃里有多个外观相同,大小不同的娃。
【Python中的嵌套】
列表嵌套:列表的元素为列表。
if嵌套:if语句中嵌套有一个或多个if语句。
for循环嵌套:for循环语句中嵌套有一个或多个for循环语句或if语句。
【实操练习】
选出1至100中能被7整除的奇数。
【方法1】
# 用range函数建一个奇数序列,起始数字为1,结束数字为100,步长为2
r = range(1,100,2)
# 用list函数查看创建的奇数序列
print(list(r))
【终端输出】
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
观察输出结果,确实都为奇数。
【方法2】
# 用range函数建一个奇数序列,起始数字为1,结束数字为100,步长为2
r = range(1,100,2)
# 用for循环查看创建的奇数序列
# 注意不要省略英文冒号
for i in r :
# 注意有4个空格的缩进
print(i)
【终端输出】
因为太占用篇幅,这里不展示输出内容。
一个数如果能被7整除则余数为0。
a = 14
# 除法
print(a/7)
# 取余
print(a%7)
【终端输出】
2.0
0
/
是Python的除号:因此a/7=14/7=2.0
%
是Python的取余号:因此a%7=14%7=0
a = 14
print(a%7)
if a%7 == 0 :
print("能被7整除!")
else:
print("不能被7整除!")
【终端输出】
0
能被7整除!
a = 8
print(a%7)
if a%7 == 0 :
print("能被7整除!")
else:
print("不能被7整除!")
【终端输出】
1
不能被7整除!
# 用range函数建一个奇数序列,起始数字为1,结束数字为100,步长为2
r = range(1,100,2)
# 用for循环依次取出奇数序列中的数字
# 注意不要省略英文冒号
for i in r :
# 注意有4个空格的缩进
# 判断该数字除以7的余数是否等于0
if i % 7 == 0 :
# 如果能被7整除则输出该数字
print(i)
print("程序结束!")
【终端输出】
7
21
35
49
63
77
91
程序结束!
【代码解析】
for循环的作用是从range对象中依次取出数字并赋值给变量i。
if语句就是for循环的循环体,是每一次循环都需要执行的语句。
它相对于for来说要有4个空格的缩进。
print(i)是if判读语句要执行的代码,它相对于if来说要有4个空格的缩进。
因为这里只需要输出能被7整除的数字,因此这里就没有用else输出不能被7整除的数字。
for 循环一定要注意print的位置。
print(i)相对于if有4个空格的缩进,说明它是if判断语句要执行的语句。
一整个if语句相对for循环语句有4个空格的缩进,它是for循环中要循环执行的代码。
print(“程序结束!”)与for是对齐的,没有缩进,说明它不是循环中的代码,只有循环结束时,才会执行该语句。
在编写循环语句的时候,大家一定要注意print的位置。
【思路解析】
初学者编写代码的时候,可以先将代码拆开。
拆成若干个我们能理解的代码块。
这样做的好处一是理清思路,二是能方便我们查找程序报错的原因。
【实操练习】
输出注射过疫苗的同学的姓名。
# 新建一个列表存储注射过北京生物疫苗的同学
BJ = ["刘一","陈二"]
# 新建一个列表存储注射过科兴中维疫苗的同学
KX = ["张三","李四","王五"]
# 新建一个总列表存储注射过疫苗的同学
zong = [BJ, KX]
# 从总列表中输出注射过疫苗的同学
for x in zong :
print(x)
print("程序结束!")
【终端输出】
['刘一', '陈二']
['张三', '李四', '王五']
程序结束!
观察输出结果,发现输出的是两个列表,并没有直接输出同学的姓名。
那如何输出同学的姓名呢,我们只需再嵌套一个for循环即可。
# 新建一个列表存储注射过北京生物疫苗的同学
BJ = ["刘一","陈二"]
# 新建一个列表存储注射过科兴中维疫苗的同学
KX = ["张三","李四","王五"]
# 新建一个总列表存储注射过疫苗的同学
zong = [BJ, KX]
for x in zong :
for y in x :
print(y)
print("程序结束!")
【终端输出】
刘一
陈二
张三
李四
王五
程序结束!
【for循环嵌套的执行流程】
【代码解析】
上述代码有2个for循环语句。
把第1个for循环语句叫做外循环。
把第2个for循环语句叫做内循环。
第1次外循环for x in zong :
表示从zong
列表中取值并赋值给变量x
。
zong
列表里有2个元素,第1次外循环从zong
列表中取出BJ赋值给变量x。
X=BJ
BJ = ["刘一","陈二"]
x取到值后代码继续往下执行。
内循环for y in x :
表示从X
中取值并赋值给变量y
。
即从列表BJ中依次取出元素并赋值给变量y。
第1次内循环y=刘一。
y取到值后,后面没有需要循环的代码,程序返回内循环,继续执行第2次内循环。
第2次内循环y=陈二。
此时,x中的值即列表BJ里的值已经取出完毕,内循环结束,程序返回外循环。
第2次外循环for x in zong :
表示从zong
列表中取值并赋值给变量x
。
此时,x取到的值是KX。
x=kx
KX = ["张三","李四","王五"]
又开始第2轮内循环。
第3次内循环y=张三。
第4次内循环y=李四。
第5次内循环y=王五。