安迪Python

V1

2022/12/12阅读:37主题:默认主题

46.for循环嵌套之九九乘法表

46.for循环嵌套之九九乘法表

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 
46-1九九乘法表
46-1九九乘法表

分类:

后端

标签:

Python

作者介绍

安迪Python
V1