当前位置:   article > 正文

python打印圣诞树思路+详解简单粗暴实现

python打印圣诞树

一、打印一个简单版圣诞树

实现如下:

  1. # *
  2. # ***
  3. # *****
  4. # *******
  5. # *********
  6. # *
  7. # *
  8. # *
'
运行

代码:

  1. for i in range(1,9):
  2. # 小于六层时
  3. if i<6:
  4. # 根据层数变化打印空格
  5. for j in range(1,7-i):
  6. print(" ",end='')
  7. # 根据层数变化打印星号
  8. for k in range(1,i*2):
  9. print("*",end='')
  10. # 大于六层时
  11. else:
  12. print(" *",end="")
  13. print()
'
运行

详解:

        一共八层,最外层循环 [1,9)。

        里面分为两种情况,一种是小于6的情况,另一种是大于6的情况。

        小于6时,输出树上部分。树上部分,每加一层,空格少一个,星号则是加两个;树干部分就是足够的空格+ 星号

二、打印一个稍复杂的圣诞树

实现如下:

  1. # *
  2. # ***
  3. # *****
  4. # *******
  5. # ***
  6. # *******
  7. # ***********
  8. # ***************
  9. # *********
  10. # ***************
  11. # *********************
  12. # ***************************
  13. # |||
  14. # |||
  15. # |||
  16. # ———————————————————————————
'
运行

代码:

  1. # 打印树上部分
  2. # 外三层
  3. for i in range(1,4):
  4. t=3**(i-1)+1
  5. # 根据星号个数,算出打印空格的个数
  6. for space in range(1, floor(14 - t / 2)):
  7. print(" ", end='')
  8. # 打印第一行的 * 号
  9. for j in range(1,t):
  10. print("*",end='')
  11. print()
  12. # 循环实现剩下三行
  13. for k in range(1, 4):
  14. # 根据星号个数,算出打印空格的个数
  15. for space in range(1,floor(14- (t + (i*2)*k)/2)):
  16. print(" ",end='')
  17. # 根据第一行,打印剩下行的 * 号
  18. for n in range(1, t + (i*2)*k):
  19. print("*", end="")
  20. print()
  21. # 树干
  22. for i in range(1,4):
  23. for j in range(1,14-floor(3/2)):
  24. print(" ",end='')
  25. print("|||")
  26. # 泥土
  27. for i in range(1,28):
  28. print('-',end='')

详解: 

        一步步分解拆开,使得思路清晰。 

        分三大部分:树上部分、树干、泥土。

        树上部分:

                先分成三层,每层按顺序打印第一行空格(根据第一行星号数量,找出空格规律)、第一行星号,根据第一行打印出剩下几行的空格(根据第几行星号数量,找出空格规律)、剩下几行星号。

                第一层的第一行是1个星号,第二层的第一行是3个星号,第三层的第一行是9个星号。

                规律是 [1,3**(i-1)+1) 。空格则是总数14-floor(  (3**(i-1)+1)  /2)。

                剩下几行规律是:

                        第一行星号数+层数*行数*2=行的星号数。即  (3**(i-1)+1)+i*k*2  个星号。

                        空格则是总数14-floor(  ((3**(i-1)+1)+i*k*2)  /2)。

        其他部分:

                实现方法太简单了,自行理解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/884460
推荐阅读
相关标签
  

闽ICP备14008679号