题目:
今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中的女朋友,请你帮助他实现梦想。
输入描述:
输入圣诞树的大小n
1<=n<=8
输出描述:
输出对应的圣诞树
示例:
#输入1
#输出:
*
* *
* * *
*
#输入2
#输出:
*
* *
* * *
* *
* * * *
* * * * * *
*
*
#输入3
输出:
*
* *
* * *
* *
* * * *
* * * * * *
* *
* * * *
* * * * * *
* * * *
* * * * * * * *
* * * * * * * * * * * *
*
*
*
解题思路:按前面推算出4时,图案如下 :
故代码如下:
n=int(input())
if n<1 or n>8:
quit()
def double(x):
x=2*x
return x
def add2(col,row):
col=col+row
return col
#创建矩阵
def createarr(rows,cols):
arr_rows=[]
for i in range(rows):
arr_cols=[]
for j in range(cols):
arr_cols.append(' ')
arr_rows.append(arr_cols)
return arr_rows
#打印矩阵
def printarr(arrs):
for i in range(len(arrs)):
s=""
for j in range(len(arrs[0])):
s=s+arrs[i][j]
print(s)
#画三角
def draw(x,arr):
stars=1
c1=x
for i in range(3):
c1=c1-1
c2=c1
for j in range(stars):
arr[i][c2]='*'
c2=c2+2
stars+=1
return arr
#将之前的矩阵复制到新矩阵
def copyarr3(star_y,s_arr,d_arr):
#star起始点
star_x=0
star_y1=star_y
for s_x in range(len(s_arr)):
star_y1=star_y
for s_y in range(len(s_arr[0])):
d_arr[star_x][star_y1]=s_arr[s_x][s_y]
star_y1+=1
star_x+=1
star_x=len(s_arr)
for s_x in range(len(s_arr)):
star_y1=0
for s_y in range(len(s_arr[0])):
d_arr[star_x][star_y1]=s_arr[s_x][s_y]
star_y1+=1
star_x+=1
star_x=len(s_arr)
for s_x in range(len(s_arr)):
star_y1=len(s_arr[0])+1
for s_y in range(len(s_arr[0])):
d_arr[star_x][star_y1]=s_arr[s_x][s_y]
star_y1+=1
star_x+=1
return d_arr
#树顶位置
x=3
#列数
col=add2(2,x)
base_arr=createarr(x,col)
arr1=draw(x,base_arr)
#star_y=起始位置y
for i in range(n-1):
star_y=x
x=double(x)
col=add2(col,x)
arr2=createarr(x,col)
arr2=copyarr3(star_y,arr1,arr2)
arr1=arr2
#如果一个显示
if n==1:
printarr(arr1)
else:
printarr(arr2)
#输出树干
for i in range(n):
print(' '*(x-1) + '*')