python练习案例09之for循环练习

这是我参与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
喜欢就支持一下吧
点赞0 分享