用python打印空心金字塔、空心菱形

用python打印空心金字塔、空心菱形


思想:化繁为简,先死后活

1.用for循环实现

def hollow_pyramid(level):
    for i in range(1, level + 1):
        for k in range(level - i):
            print(' ', end='')
        for j in range(0, 2 * i - 1):
            if j == 0 or j == 2 * (i - 1) or i == level:
                print("*", end='')
            else:
                print(" ", end='')
        print()


def hollow_diamond(level):
    for i in range(1, level + 1):
        if i <= (level + 1) / 2:
            for k in range(level - i):
                print(' ', end='')
            for j in range(0, 2 * i - 1):
                if j == 0 or j == 2 * (i - 1):
                    print("*", end='')
                else:
                    print(" ", end='')
            print()
        else:
            for k in range(i - 1):
                print(' ', end='')
            for j in range(0, 2 * (level - i) + 1):
                if j == 0 or j == 2 * (level - i):
                    print("*", end='')
                else:
                    print(" ", end='')
            print()


hollow_pyramid(11)
hollow_diamond(11)

在这里插入图片描述
2.用while实现
打印实心的金字塔(因为空心和实心区别主要在于j的取值,和上面思路一致,所以不在赘述,兄弟们可以自己试一试改成空心)

  1. 先死,5行金字塔为例
i = 1
while i <= 5:
    j = 0
    k = 0
    while True:
        if k < (5 - i):
            print(" ", end='')
        else:
            break
        k += 1
    while True:
        if j < (2 * i - 1):
            print("*", end='')
        else:
            break
        j += 1
    print()
    i += 1
  1. 后活
level = int(input())
i = 1
while i <= level:
    j = 0
    k = 0
    while True:
        if k < (level - i):
            print(" ", end='')
        else:
            break
        k += 1
    while True:
        if j < (2 * i - 1):
            print("*", end='')
        else:
            break
        j += 1
    print()
    i += 1

心得
for循环中变量的值可以依次取出,实现递增的效果;while循环则采用赋值的方式,增加判断条件,知道自增后值不满足判断条件跳出循环,实现与for循环相同的效果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值