美文网首页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