这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
题目1 :
for循环嵌套之打印99乘法表
for i in range(1,10):
for j in range(1,i+1):
res = i * j
print('{j} * {i} = {res}'.format(i=i,j=j,res=res),end='\t')
print()
复制代码
解题思路:
1.我们先打印1的那一列
for i in range(1,10):
res = i * 1
print('1 x {i} = {res}'.format(i=i,res=res))
复制代码
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
复制代码
2.但是,我们顺着打印不好打印所有的,所以我们尝试一行一行打印,我们先横着打印1
for i in range(1,2):
res = i * 1
print('1 x {i} = {res}'.format(i=i,res=res))
复制代码
显示:
1 x 1 = 1
复制代码
3.然后我们发现我们还需要再套一个for循环来代替1这个数字的变量,因为横着打印前面的数也要跟着变,我们打印1-2
for i in range(1,3):
for j in range(1,3):
res = i * j
print('{j} x {i} = {res}'.format(i=i,j=j,res=res))
复制代码
显示:
1 x 1 = 1
2 x 1 = 2
1 x 2 = 2
2 x 2 = 4
复制代码
4.但是我们发现这每打印一次就换一次行,所以我们让它不换行,并且用制表符来对每一个进行分割
for i in range(1,3):
for j in range(1,3):
res = i * j
print('{j} x {i} = {res}'.format(i=i,j=j,res=res),end='\t')
复制代码
显示:
1 x 1 = 1 2 x 1 = 2 1 x 2 = 2 2 x 2 = 4
复制代码
5.但是这样又都是一行显示了,我们希望它打完一行结束后再换行,我们只需要在i所在的那个循环换一次行就可以了
for i in range(1,3):
for j in range(1,3):
res = i * j
print('{j} x {i} = {res}'.format(i=i,j=j,res=res),end='\t')
print()
复制代码
显示:
1 x 1 = 1 2 x 1 = 2
1 x 2 = 2 2 x 2 = 4
复制代码
6.1×2 和2×1 是一样的,我们只希望显示1X2就可以了,所以我们需要优化一下,第一个乘数j不能超过第二个乘数i,也就是最后只能等于i,所以循环的范围要改一下
for i in range(1,3):
for j in range(1,i+1):
res = i * j
print('{j} x {i} = {res}'.format(i=i,j=j,res=res),end='\t')
print()
复制代码
显示:
1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
复制代码
6.现在就基本完成了,只需要把范围改成9×9就好了
for i in range(1,10):
for j in range(1,i+1):
res = i * j
print('{j} x {i} = {res}'.format(i=i,j=j,res=res),end='\t')
print()
复制代码
显示:
1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49
1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64
1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
复制代码
题目2:
for循环嵌套之打印金字塔
*
***
*****
*******
*********
复制代码
解题思路:
这道题相对有点难,打印这个图形,但是我们要研究其中的规律,尽可能找更多的数字。通过观察,我们发现,这个金字塔有5层,每一层的“*”数量是层数的二倍减一,所以用公式表示就是 xing_num = 2 * level – 1,总共有五层,所以记作 max_level = 5,每一层的星星都是居中的,其余用空格填充,所以此处应该用字符串的center函数,它的层数是逐层增加的,每一层总长度为9.
1.我们还是先打印一层,第一层我们设置变量level为1,我们可以算出这一层星星数量xing_num
level = 1
xing_num = 2 * level - 1
res = '*'*xing_num
复制代码
2.这样我们就得到了星星在第一层的图像,然后我们在把它打印出来
level = 1
xing_num = 2 * level - 1
res = '*'*xing_num
print(res.center(9))
复制代码
2.然后我们套层循环,循环打印前三层
level = 1
for level in range(1,4):
xing_num = 2 * level - 1
res = '*'*xing_num
print(res.center(9))
复制代码
结果:
*
***
*****
复制代码
3.因为总共有五层,所以我们设置变量max_level = 5 ,然后改一下循环范围就ok了
level = 1
max_level = 5
for level in range(1,max_level+1):
xing_num = 2 * level - 1
res = '*'*xing_num
print(res.center(9))
复制代码
显示:
*
***
*****
*******
*********
复制代码
\
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END