嵌套循环和if语句的嵌套原理相似,就是在一个循环体内嵌套另外一个循环体。不同的是循环嵌套可以采用for-for嵌套、for-while嵌套、while-for嵌套、以及while-while嵌套四种形式。
1. for-for嵌套
它的形式为:
for i in range(n): for j in range(m): 循环体2 循环体1
举个例子:
我们定义两个列表(一种存储数据的容器)。
list_first = [1,2,3,4,5,6,7,8,9]
list_second = [2,4,8,10,12,20]
我们要找到两个列表中相同的数据并打印出来。
代码如下:
list_first = [1,2,3,4,5,6,7,8,9] list_second = [2,4,8,10,12,20] for i in list_first: for j in list_second: if i == j: print(i)
输出结果为:
2 4 8
2. for-while嵌套
它的形式为:
for 变量 in 对象: while 条件: 循环体2 循环体1
举个例子:
index = [1,32,77,121,150]
遍历输出index列表中的值,对于小于100的数,把它每次加上10,直到大于100后再输出。
代码如下:
index = [1,32,77,121] for i in index:#遍历index while i < 100:#如果i小于100 i += 10#每次加上10 print(i)
输出结果为:
101 102 107 121
3. while-while嵌套
结构如下:
while 条件: while 条件: 循环体2 循环体1
具体就不再举例,大家可以去在试着使用这种结构去解决问题。
4. while-for嵌套
结构如下:
while 条件: while 条件: 循环体2 循环体1
5. 九九乘法表(作业1570)
在循环嵌套里有一比较经典的例子——打印九九乘法表。通过这个实例可以更清晰的看到双层循环嵌套的结构。
我们先来看一下代码:
for i in range(1,10):#先遍历1~9 for j in range(1,i+1):#然后遍历1~i print(i,'*',j,'=',i * j,end='丨')#循环输出1~i * i的值 print(end='\n')
再看一下输出结果:
1 * 1 = 1丨 2 * 1 = 2丨2 * 2 = 4丨 3 * 1 = 3丨3 * 2 = 6丨3 * 3 = 9丨 4 * 1 = 4丨4 * 2 = 8丨4 * 3 = 12丨4 * 4 = 16丨 5 * 1 = 5丨5 * 2 = 10丨5 * 3 = 15丨5 * 4 = 20丨5 * 5 = 25丨 6 * 1 = 6丨6 * 2 = 12丨6 * 3 = 18丨6 * 4 = 24丨6 * 5 = 30丨6 * 6= 36丨 7 * 1 = 7丨7 * 2 = 14丨7 * 3 = 21丨7 * 4 = 28丨7 * 5 = 35丨7 * 6= 42丨7 * 7 = 49丨 8 * 1 = 8丨8 * 2 = 16丨8 * 3 = 24丨8 * 4 = 32丨8 * 5 = 40丨8 * 6= 48丨8 * 7 = 56丨8 * 8 = 64丨 9 * 1 = 9丨9 * 2 = 18丨9 * 3 = 27丨9 * 4 = 36丨9 * 5 = 45丨9 * 6= 54丨9 * 7 = 63丨9 * 8 = 72丨9 * 9 = 81丨
运行图:
原理:先进行第一层循环,依次为1~9。第二层循环是在第一层循环的基础上再进行依次遍历,假如第一层循环现在是5,那么第二层循环找到1~5,然后分别用1~5去乘上5,那么就完成一次循环。我们在第1层循环中打印一个换行,可以使得代码更加明了。
1013 | [编程入门]Sn的公式求和 |
1015 | [编程入门]求和训练 |
1016 | [编程入门]水仙花数判断 |
1018 | [编程入门]有规律的数列求和 |
1019 | [编程入门]自由下落的距离计算 |
1020 | [编程入门]猴子吃桃的问题 |
1022 | [编程入门]筛选N以内的素数 |
1059 | 二级C语言-等差数列 |
1060 | 二级C语言-同因查找 |
1135 | C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 |
1570 | 蓝桥杯算法提高VIP-输出九九乘法表 |
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程