zoukankan      html  css  js  c++  java
  • 线性数据结构(11)——九九乘法表详解

    打印方阵

    for i in range(1,10):
        line=''
        for j in range(1,10):
            line+=str(j)+'*'+str(i)+'='+str(i*j)+' '
        print(line)
    
    1*1=1 2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9 
    1*2=2 2*2=4 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18 
    1*3=3 2*3=6 3*3=9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27 
    1*4=4 2*4=8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36 
    1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45 
    1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54 
    1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63 
    1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72 
    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 

    打印乘法三角

    添加条件 i>=j ,i<j可以省略

    for i in range(1,10):
        line=''
        for j in range(1,10):
            if i>=j:
                line+=str(j)+'*'+str(i)+'='+str(i*j)+' '
        print(line)
    
    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 

    使用str.format优化打印表达

    for i in range(1,10):
        line=''
        for j in range(1,10):
            if i>=j:
                line+='{}*{}={} '.format(j,i,i*j)    ##line+=str(j)+'*'+str(i)+'='+str(i*j)+' '
        print(line)
    
    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 

    优化range范围

    j in range(1,10) ===》 1<=j<10

    i>=j ===》 j<i

    ===》 1<=j<i ===》 1<=j<=i+1

    for i in range(1,10):
        line=''
        for j in range(1,i+1):
                line+='{}*{}={} '.format(j,i,i*j)
        print(line)
    
    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 

    print函数

    print?

    Docstring:

    print(value, ..., sep=' ', end=' ', file=sys.stdout, flush=False)

    sep=' '  ##设置打印分割,默认为空格

    end=' '  ##设置打印结尾,默认为换行符

    print(1,2,sep='test',end='ff')
    print(1,2,sep='test',end='
    ')
    print(1,2,sep='test',end='	')
    print(1,2,sep='test')
    print(1,2,sep='test')
    
    1test2ff1test2
    1test2    1test2
    1test2

    改写换行符解决打印换行问题

    for i in range(1,10):
        for j in range(1,i+1):
            print('{}*{}={}'.format(j,i,i*j),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 

    使用 if 语句判断 end结尾

    当 i=j end符号为换行,当 i>j end符号为空格

    for i in range(1,10):
        for j in range(1,i+1):
            if i==j:
                endchar='
    '
            else:
                endchar=' '
            print('{}*{}={}'.format(j,i,i*j),end=endchar)
    
    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

    使用三元表达式

    三元表达式写法,真值在前

    if i==j:
        endchar='
    '
    else:
        endchar=' '
    
    可以写成:
    
    endchar='
    ' if i==j else ' '
    for i in range(1,10):
        for j in range(1,i+1):
            print('{}*{}={}'.format(j,i,i*j),end='
    ' if i==j else ' ')
    
    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

    使用列表方式

    for i in range(1,10):
        line=[]
        for j in range(1,i+1):
            line.append('{}*{}={}'.format(j,i,i*j))
        print(*line)    ## *line 解开列表
    
    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

    解决对齐问题

    1.在前4行的第二列补空格

    在 str.format 中添加条件,'{}*{}={}{}'.format(j,i,i*j,' ' if j==2 and i<5 else '')

    for i in range(1,10):
        for j in range(1,i+1):
            print('{}*{}={}{}'.format(j,i,i*j,' ' if j==2 and i<5 else ''),end='
    ' if i==j else ' ')
    
    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.设置得数占两位字符

    {:2}

    for i in range(1,10):
        for j in range(1,i+1):
            print('{}*{}={:2}'.format(j,i,i*j),end='
    ' if i==j else ' ')
    
    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}  ##左对齐

    for i in range(1,10):
        for j in range(1,i+1):
            print('{}*{}={:<2}'.format(j,i,i*j),end='
    ' if i==j else ' ')
    
    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

    3.使用 table 对齐

    for i in range(1,10):
        for j in range(1,i+1):
            print('{}*{}={}'.format(j,i,i*j),end='
    ' if i==j else '	')
    
    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

    4.判断空格补位

    for i in range(1,10):
        for j in range(1,i+1):
            product=i*j
            print('{}*{}={:<{}}'.format(j,i,i*j,2 if j>1 and product<10 else 1),end='
    ' if i==j else ' ')
    
    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

    打印上三角

    for i in range(1,10):
        print((i-1)*'	',end='')
        for j in range(i,10):
            print('{}*{}={}'.format(i,j,i*j),end='
    ' if j==9 else '	')
    
    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
        2*2=4    2*3=6    2*4=8    2*5=10    2*6=12    2*7=14    2*8=16    2*9=18
            3*3=9    3*4=12    3*5=15    3*6=18    3*7=21    3*8=24    3*9=27
                4*4=16    4*5=20    4*6=24    4*7=28    4*8=32    4*9=36
                    5*5=25    5*6=30    5*7=35    5*8=40    5*9=45
                        6*6=36    6*7=42    6*8=48    6*9=54
                            7*7=49    7*8=56    7*9=63
                                8*8=64    8*9=72
                                    9*9=81

    固定字符长度

    for i in range(1,10):
        print((i-1)*' '*8,end='')
        for j in range(i,10):
            s='{}*{}={}'.format(i,j,i*j)
            print('{:8}'.format(s),end='
    ' if j==9 else '')
    
    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   
            2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18  
                    3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27  
                            4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36  
                                    5*5=25  5*6=30  5*7=35  5*8=40  5*9=45  
                                            6*6=36  6*7=42  6*8=48  6*9=54  
                                                    7*7=49  7*8=56  7*9=63  
                                                            8*8=64  8*9=72  
                                                                    9*9=81  
  • 相关阅读:
    eclipse最有用快捷键整理(转)
    Spring IOC的配置使用(转)
    char varchar varchar2 的区别 (转)
    BigDecimal用法详解(转)
    20160126--springaop
    20160125--Spring
    20150122--接口
    Servlet与JSP的区别
    练习
    151127
  • 原文地址:https://www.cnblogs.com/omgasw/p/11672314.html
Copyright © 2011-2022 走看看