美文网首页Python全栈工程师
7.2-99乘法表变体和菱形变体打印

7.2-99乘法表变体和菱形变体打印

作者: BeautifulSoulpy | 来源:发表于2019-08-08 15:41 被阅读3次

    学习是一种借鉴,先借鉴别人的,再利用别人的方法来思考!

    习题1:99乘法表变体的打印:(要么向前加,要么向右靠)
    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 
    思路1:循环补齐前面的空行;
    unit = ' '*7
    for i in range(1,10):
        print(unit * (i-1),end='')
        for j in range(i,10):
            print("{:}*{:}={:<2}".format(i,j,i*j),end=' ')
        print()
    -------------------------------------------
    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 
    
    
    思路2:整行向右看齐;
    for i in range(1,10):
        line = ''
        for j in range(i,10):
            line += '{}*{}={:<{}}'.format(i,j,i*j,2 if j<2 else 3)
        print("{:>66}".format(line))
    -------------------------------------------------------------------
        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 
    

    练习2:打印菱形(面试题目)

    # 思路1:对称折半思想:
    n=int(input('>>>'))
    
    val='*'
    va=' '
    m=n//2
    
    for i in range(-m,m+1):
        if i < 0:
            print(va*(-i)+val*(n+2*i)+va*(-i))
        elif i == 0:
            print(val*n)
        else:
            print(va*i+val*(n-2*i)+va*i)
    --------------------------------------------------------
    >>>7
       *   
      ***  
     ***** 
    *******
     ***** 
      ***  
       *   
    
    # 思路2:优化方案:不关注后置空格,只打印前置空格(节省资源);三元表达式写法:
    for i in range(-3,4):
        x = -i if i < 0 else i
        print(x*' ' + (7-2*x) * '*')
    ---------------------------------------
       *
      ***
     *****
    *******
     *****
      ***
       *
    
    

    练习3:打印对顶三角形

    #练习:打印对顶三角形;
    7 *******
    5  *****
    3   ***
    1    *
    3   ***
    5  *****
    7 *******
    
    思路一:找规律
    for i in range(-7,8,2):    # [-7,-5,-3,1,3,5,7]
        if i == -1:
            continue
        else:
            print(int((7-abs(i))/2)*' '+'*'*abs(i))
    ----------------------------------------------
    *******
     *****
      ***
       *
      ***
     *****
    *******
    

    练习4:打印闪电;

    练习:打印闪电;
       *
      **
     ***
    *******
       ***
       **
       *
    
    # 思路1:利用条件控制;
    n=7
    for i in range(-3,4):
        #x = -i if i<0 else i
        if i < 0:
            print(abs(i)*' '+(4+i)*'*')
        elif i == 0:
            print('*'*7)
        else:
            print(3*' '+(4-i)*'*')
    -----------------------------------------------------
       *
      **
     ***
    *******
       ***
       **
       *
    

    相关文章

      网友评论

        本文标题:7.2-99乘法表变体和菱形变体打印

        本文链接:https://www.haomeiwen.com/subject/zjyxjctx.html