• 例子:循环语句--九九乘法表


     1 for j in range(1,10):
     2     for i in range(1,j+1):
     3         k = str(i) + '*' + str(j) + '=' + str(i*j)
     4         print(k,end='	')
     5     print('
    ')
     6 ##############################################
     7 1*1=1    
     8 1*2=2    2*2=4    
     9 1*3=3    2*3=6    3*3=9    
    10 1*4=4    2*4=8    3*4=12    4*4=16    
    11 1*5=5    2*5=10   3*5=15    4*5=20    5*5=25    
    12 1*6=6    2*6=12   3*6=18    4*6=24    5*6=30    6*6=36    
    13 1*7=7    2*7=14   3*7=21    4*7=28    5*7=35    6*7=42    7*7=49    
    14 1*8=8    2*8=16   3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64    
    15 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    
     1 for i in range(1,10):
     2     line = ''
     3     for j in range(1,i+1):
     4         line += '{}*{}={:<2}  '.format(j,i,i*j)
     5     print(line)
     6 #############################################
     7 E:python文件夹venvScriptspython.exe E:/python文件夹/jiujiu.py
     8 1*1=1   
     9 1*2=2   2*2=4   
    10 1*3=3   2*3=6   3*3=9   
    11 1*4=4   2*4=8   3*4=12  4*4=16  
    12 1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
    13 1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
    14 1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
    15 1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
    16 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  
    17 
    18 Process finished with exit code 0

    以上的两种方法都需要注意乘数i与被乘数j的边界问题,除此之外还需要注意打印出来的格式问题,要每行每列都相对应的对齐。

    第二种方法里使用到了format函数,关于该函数的用法,详见Python的学习之路。{:<2},冒号是分隔符号,<表示左对齐,2表示宽度。

    例子延伸:如何打印别的形状的九九乘法表。

     1 for i in range(1,10):
     2     line = ''
     3     for j in range(i,10):
     4         line += '{}*{}={:<2}  '.format(i,j,i*j)
     5     print(line)
     6 #################################################
     7 D:untitledproject2venvScriptspython.exe D:/untitled/project2/day1/ttt.py
     8 1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9   
     9 2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18  
    10 3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27  
    11 4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36  
    12 5*5=25  5*6=30  5*7=35  5*8=40  5*9=45  
    13 6*6=36  6*7=42  6*8=48  6*9=54  
    14 7*7=49  7*8=56  7*9=63  
    15 8*8=64  8*9=72  
    16 9*9=81  
    17 
    18 Process finished with exit code 

    如上图所示,如果要打印该种类型的九九乘法表,那么需要考虑边界的问题。我们来看每一行的输出,当i=1时,j取值1~9;当i=2时,j取值2~9……那么规律出来了,j的取值是i~9,即代码第3行。

     1 for i in range(1,10):
     2     line = ''
     3     for j in range(i,10):
     4         line += '{}*{}={:<{}}  '.format(i,j,i*j,2 if j < 4 else 3)
     5     print('{:>80}'.format(line))
     6 ############################################
     7 D:untitledproject2venvScriptspython.exe D:/untitled/project2/day1/ttt.py
     8   1*1=1   1*2=2   1*3=3   1*4=4    1*5=5    1*6=6    1*7=7    1*8=8    1*9=9    
     9           2*2=4   2*3=6   2*4=8    2*5=10   2*6=12   2*7=14   2*8=16   2*9=18   
    10                   3*3=9   3*4=12   3*5=15   3*6=18   3*7=21   3*8=24   3*9=27   
    11                           4*4=16   4*5=20   4*6=24   4*7=28   4*8=32   4*9=36   
    12                                    5*5=25   5*6=30   5*7=35   5*8=40   5*9=45   
    13                                             6*6=36   6*7=42   6*8=48   6*9=54   
    14                                                      7*7=49   7*8=56   7*9=63   
    15                                                               8*8=64   8*9=72   
    16                                                                        9*9=81   
    17 
    18 Process finished with exit code 0

    再看上图所示,如果是这个形状的九九乘法表,该如何实现呢?先看数值方面,和上上图的是完全一样,但是位置不一样。该图中是以每行为单位右边对齐的。怎么实现呢?在这里要使用format()函数,在j循环里面,一个整循环即为输出一行,那么我们以行为单位使用format()函数,即代码第5行,注意这里的print()是在j的for循环之外,在i的for循环之里。再来看看'{:>80}'.format(line),>表示右对齐,80这个参数是根据实际情况进行调节,一个{}对应一个对象,该处就一个对象line,因此需要一个{}。

    然后还有一个问题,在第一个例子的输出结果里,列与列之间的间隔是不一样的,乘的结果为个位数之间与乘的结果为两位数之间的间隔是不一样的。这就是代码第4行存在的意义。'{}*{}={:<{}} '.format(i,j,i*j,2 if j < 4 else 3),来看看这行代码,看输出结果的规律,当j<4时,乘的结果为个位数;当j>=4时,乘的结果为两位数。以此为if判断语句,来调整间隔问题。这里要注意format()函数的用法,2 if j < 4 else 3在format()函数里是一个表达式,可以算作一个对象来使用。这里要注意,2是j<4的结果,3是j>=4的结果。因为默认的话,乘的结果为个位数之间与乘的结果为两位数之间的间隔是一样的,假设都为3个单位,但是乘的结果为两位数之间的间隔会显示占了2个单位(因为结果多占了1位),因此需要在乘的结果为个位数之间的间隔为n的时候,乘的结果为两位数之间的间隔需要为n+1。

    '{}*{}={:<{}} '.format(i,j,i*j,2 if j < 4 else 3),这里还需要注意每个{}对应的对象,表达式所对应的{}所在的位置。

  • 相关阅读:
    C语言编程的两个工具:valgrind和core
    C语言动态库和静态库的使用及实践
    编译安装pgbouncer-checking for OpenSSL... configure: error: not found
    automake使用
    make笔记
    GCC命令
    gcc中关于静态库和动态库使用(转)
    zookeeper的c API 单线程与多线程问题 cli_st和cli_mt
    zookeeper数据一致性与paxos算法
    Deepgreen DB简介(转)
  • 原文地址:https://www.cnblogs.com/linfengs/p/11573274.html
Copyright © 2020-2023  润新知