for循环嵌套
1.循环嵌套
加深理解:问,这个循环会打印几次hello,world?
答:25次,循环嵌套,外循环满足条件执行内循环,内循环会打印5次没问题,而这个内循环就相当于循环体,执行完后开始下一次外循环,以此类推,打印25次。
.
2.案例
1.请打印一个4行5列的*矩形
没毛病,这是我们之前的做法。但如果是让我们打印4行100列呢?我们要在打印里写100个*吗?
.
因此,这种做法并不能完全解决我们的需求,在这里,我们要用循环嵌套做
.
穿插知识:
我们简化问题,先打印出1行5列的* 如图
如果能让程序再重复打印4次这样的代码,不久有了4行5列的*了吗
所以我们在该代码的外面再写一个循环,让其循环4次 如图
我们发现没有换行,原因是因为我们用的是print打印,所以我们再人为地加个换行
这样,外循环控制了行数,而内循环控制了列数,无论是多少行多少列都可以打印出
.
2.在控制台中用*打印5行直角三角形
要打印这个直角三角形,不就相当于是矩形列数的* 在不断地减少吗,而控制矩形列数*的是内循环
.
如果内循环的判断条件可以变化,即从1-5,那每次的打印不就可以从1颗变成5颗了吗
因此,内循环的判断条件绝对不能是一个字面量,而应该是一个变量,恰好,i不就是从1变到5吗 如图
执行流程:
1.i=1,满足条件,进入内循环,j=1,此时j=i,满足条件,打印一个* ,然后j+1,j=2,大于i=1内循环结束,i+1
2.i=2,满足条件,进入内循环,j=1,j<i,打印一个* ,然后j+1,j=2,j还是<i,再打印一个* ,j再+1,j>i,内循环结束,i+1
3.i=3,满足条件,进入内循环,j=1,j<i,打印一个 * ,然后j+1,j=2,j<i,打印一个* ,j再+1,j=i,打印一个* ,然后j继续+1,j>i,内循环结束,i+1
以此类推,打印出了直角三角形
假如要输出一个倒过来的直角三角形呢?
答:那就让列数的* 先是5颗,到最后变为1颗就行了。
我们让内循环的判断条件为5->1即可,而内循环的判断条件是i控制,所以要改变外循环{} 如图
3.打印99乘法表
先了解一下99乘法表长什么样
我们发现样子长的和上面打印的直角三角形很像,而直角三角形又是通过矩形打印出的,由此得出思路
.
1.先打印一个9行9列的矩形
2.再改成一个9行的直角三角形
3.把* 改成1*1=1
4.在99乘法表中找规律
我们发现* 左边的数随着每一行都会加1,而* 右边的数则根据行数不做改变,仔细一想,左边会改变不就相当于是j吗,而右边只随行数不就是i吗 如图