圣诞树绘制

k=0
kaiguan=1
def shengdanshu(n):
    global k
    global z
    if 2*z1+1>20:                 #是2*z1+1最后一个三角形最后一行星号*的总个数
        h=int((2*z1+1)/20)
    else:
        h=1                       #最后一个三角形最后一行星号*的总个数不大于20则树干为 3个星号

    for i in range(0,n):          #绘制第一行
        if i==0 and b==1:
            print(z*' '+30*' '+'*')
            z=z-2                 #z是空白部分,绘制一行,空白部分就往左退2格
            k+=2                  #k是星号部分,绘制一行,星号就往右增2格
        
        else:                     #绘制第一行下面的行数
            print(z*' '+30*' '+'*'*k,end="")
            print('*',end="")
            print('*'*k,end="\n")
            z=z-2
            k+=2

    if d==n:                      #到最后肯定是d==n,即执行到shengdanshu(n)的部分,也就是开始树干位置的绘制                                      
        for u in range(d-1):      #d-1是随意设置的,即树干的层数
            print(30*' '+(z1-h)*' '+'*'*h+'*'+'*'*h)   #始终保持树干居中
    z=z1                          #将z1赋值给z,使z又变为原始的最后一行左半边星号个数,
                                  #即一棵圣诞树的第二个三角形的尖顶又跟第一个三角形的尖顶对齐
    k=0                           #初始化k,为重新开始绘制下一个三角形的星号*作准备
    
while kaiguan==1:
    b=1
    n=int(input("请输入圣诞树最后一棵的层数:"))
    if n<4:
        print("\n\t\t圣诞树太小,无法表现出其状态,请重新输入大于等于4的数字\n")
    else:
        z=2*n-2   #z为最后一行左半边星号个数,同时也是第一行左半边空格的个数
        
        z1=z      #因为上面已有z=z-2,故用z1来保存原始的z即最后一行左半边星号个数
        
        d=n       #用d来保存输入的原始的n的层数
        shengdanshu(n-2)
        b=b-1
        shengdanshu(n-1)
        shengdanshu(n)
    print("\n")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZYT_庄彦涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值