
3.5 循环语句嵌套
在编写代码时,可能需要对一段代码执行多次,这时可以使用循环语句。假设需要多次执行循环语句,那么可以将循环语句放在循环语句之中,实现循环嵌套。
3.5.1 while循环嵌套
while循环中可以嵌套while循环,其格式如下:

在以上格式中,首先判断外层while循环的条件表达式1是否成立,如果成立,则执行代码块1,并能够执行内层while循环。执行内层while循环时,判断条件表达式2是否成立,如果成立则执行代码块2,直至内层while循环结束。也就是说,每执行+次外层的while语句,都要将内层的while循环重复执行一遍。
例如,使用while循环嵌套语句打印由“*”组成的直角三角形,示例如下。
【示例18】 while循环嵌套语句

程序运行结果:

值得一提的是,只要while循环嵌套格式正确,嵌套的形式和层数就不受限制。当然,如果嵌套的层级太多,代码会变得很复杂,难以理解。此时最好调整一下代码结构,将嵌套的层数控制在3层以内。
3.5.2 for循环嵌套
for循环也可以嵌套使用。for循环嵌套的格式如下:

for循环嵌套语句与while循环嵌套语句大同小异,都是先执行外层循环再执行内层循环,每执行一次外层循环都要执行一遍内层循环。使用for循环嵌套打印由“*”组成的直角三角形的示例如下。
【示例19】 利用循环嵌套输出直角三角形

程序运行结果如下:

使用for循环嵌套打印由“*”组成的等腰三角形的示例如下。
【示例20】 利用循环嵌套输出等腰三角形

程序运行结果如下:

通过Python特点改进循环输出等腰三角形的示例如下。
【示例21】 通过Python特点实现代码改进

程序运行结果同示例相同。
3.5.3 技能训练
上机练习13九九乘法表
需求说明
乘法口诀是中国古代筹算中进行乘法、除法、开方等运算的基本计算规则,沿用至今已有两千多年。古代的乘法口诀与现在使用的乘法口诀顺序相反,自上而下从“九九八十一”开始到“一一得一”为止,因此,古人用乘法口诀的前两个字“九九”作为此口诀的名称。
编写程序,实现通过for循环嵌套输出下列样式的九九乘法表的功能。
