赞
踩
一、打印一个简单版圣诞树
实现如下:
- # *
- # ***
- # *****
- # *******
- # *********
- # *
- # *
- # *
'运行
代码:
- for i in range(1,9):
- # 小于六层时
- if i<6:
- # 根据层数变化打印空格
- for j in range(1,7-i):
- print(" ",end='')
- # 根据层数变化打印星号
- for k in range(1,i*2):
- print("*",end='')
- # 大于六层时
- else:
- print(" *",end="")
- print()
'运行
详解:
一共八层,最外层循环 [1,9)。
里面分为两种情况,一种是小于6的情况,另一种是大于6的情况。
小于6时,输出树上部分。树上部分,每加一层,空格少一个,星号则是加两个;树干部分就是足够的空格+ 星号
二、打印一个稍复杂的圣诞树
实现如下:
- # *
- # ***
- # *****
- # *******
- # ***
- # *******
- # ***********
- # ***************
- # *********
- # ***************
- # *********************
- # ***************************
- # |||
- # |||
- # |||
- # ———————————————————————————
'运行
代码:
- # 打印树上部分
- # 外三层
- for i in range(1,4):
- t=3**(i-1)+1
- # 根据星号个数,算出打印空格的个数
- for space in range(1, floor(14 - t / 2)):
- print(" ", end='')
- # 打印第一行的 * 号
- for j in range(1,t):
- print("*",end='')
- print()
- # 循环实现剩下三行
- for k in range(1, 4):
- # 根据星号个数,算出打印空格的个数
- for space in range(1,floor(14- (t + (i*2)*k)/2)):
- print(" ",end='')
- # 根据第一行,打印剩下行的 * 号
- for n in range(1, t + (i*2)*k):
- print("*", end="")
- print()
- # 树干
- for i in range(1,4):
- for j in range(1,14-floor(3/2)):
- print(" ",end='')
- print("|||")
- # 泥土
- for i in range(1,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)。
其他部分:
实现方法太简单了,自行理解。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。