46.for循环嵌套之九九乘法表
文章目录
- 46.for循环嵌套之九九乘法表
- 1. 目标任务
- 2. 完成第1行输出
- 2. 分析前3行规律
- 3. 编写第1行代码
- 4. 编写前2行代码
- 5. 调整输出格式
- 6. 完成总代码
1. 目标任务
本节的任务是利用for循环嵌套编写九九乘法表。
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
怎样才能输出上面的九九乘法表呢?
在我们没有思路的时候,我们先把任务拆分,然后试着找到编写规律。
2. 完成第1行输出
【目标任务】
原样输出1*1=1
x = 1
y = 1
print("%d*%d=%d" % (x, y , x*y))
【终端输出】
1*1=1
不理解%d作用的需要先回看上一节《45.%占位符格式化处理》的内容。
【语法】
(要输出的内容 % 要格式化的变量或数值)
"%d*%d=%d"
是最后要输出的内容的模板。
%
是格式化占位符。
x, y , x*y
是3个要格式化的变量,分别替换输出模板中的%d
.
2. 分析前3行规律
【输出内容】
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
【分析规律】
第1行:x=1,y=1
第2行:x=1、2,y=2
第3行:x=1、2、3,y=3
我们发现y的值在每一行都是固定的,第1行y=1,第y=2,第3行y=3。
x的值是不固定的,它和y有一定的关联。
y=1时,x=1
y=2时,x=1,2
y=3时,x=1,2,3
x的值总是从1开始到y结束,且两个数之间差1。
我们可以很快速的想到range函数可以实现这个输出。
x和y是要联系在一起的,因此这里用y+1来控制x的值。
range函数含前不含后,因此,当x要取1的时候,range函数要以y+1结束(不含)。
【y = 1】
y = 1
print(list(range(1,y+1)))
【终端输出】
[1]
【y = 2】
y = 2
print(list(range(1,y+1)))
【终端输出】
[1, 2]
【y = 3】
y = 3
print(list(range(1,y+1)))
【终端输出】
[1, 2, 3]
3. 编写第1行代码
值是变动的,且每次取出的数值是不一样的,我们考虑用range函数来生成值,用for循环来取值。
y在每一行都是固定的,因此我们可以把y写成for循环的外循环。
x每次都是从1开始,到等于y值结束,因此x要写成for循环的内循环。
同样先完成第一行代码的编写。
for y in range(1,2):
for x in range(1,y+1):
print("%d*%d=%d" % (x, y , x*y))
【终端输出】
1*1=1
4. 编写前2行代码
1*1=1
1*2=2 2*2=4
第2行,y=2,外循环的range的范围为1到3(不含3)。
for y in range(1,3):
for x in range(1,y+1):
print("%d*%d=%d" % (x, y , x*y))
【终端输出】
1*1=1
1*2=2
2*2=4
5. 调整输出格式
观察输出结果,发现输出的格式和我们要的不一样。
再观察九九乘法表,我们发现每一行输出以后都有一个换行。
因此在每一次内循环执行完毕后我们都添加一个换行print( )
。
因为每1行的2个表达式之间都有一个空格,因此我们在内循环中添加一个空格end = " "
。
end表示打印完最后一个值需要添加的字符串,用来设定输出语句以什么结尾。
end = " "
:end引号中有1个空格,意思是输出完表达式后在输出一个空格。
for y in range(1,3):
for x in range(1,y+1):
print("%d*%d=%d" % (x, y , x*y),end = " ")
# 内循环结束,输出一个换行
print()
【终端输出】
1*1=1
1*2=2 2*2=4
6. 完成总代码
乘法口诀共有9行,外循环需要循环9次,y的取值范围为1到9。
for y in range(1,10):
for x in range(1,y+1):
print("%d*%d=%d" % (x, y, x*y),end = " ")
# 内循环结束,输出一个换行
print()
【终端输出】
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81