如何用python语言打印菱形?

上一篇内容,我们打印了各种三角形,今天我们一起看看如何打印出菱形?其实我们可以对菱形进行一个拆分,如下图所示:

上半部分是一个等腰三角形,下半部分是一个倒着的等腰三角形的前面再有一个空白三角形。这样分解开来,我们不难发现,有两部分都是我们写过的,只有倒三角没有写过,但是也不难,接下来请看代码。

# 打印上半部分等腰三角形
for i in range(1,6):
    for j in range(1,6-i):
        print(" ",end=" ")
    for k in range(1,2*i):
        print("*",end=" ")
    print()
#打印下半部分
for i in range(1,5):
    for j in range(i):
        print(" ",end=" ")#打印空格直三角
    for k in range(1,2*(5-i)):
        print("*",end=" ")#打印倒三角
    print()

这里打印倒三角时为什么范围是2*(5-i)呢?

蓝色三角形部分“*”的数量是从7、5、3、1依次递减的,当我们外层循环的i=1时,2*(5-i)为8,range()函数不取后边界,刚好为7,这就是2*(5-i)的由来。

当然这是我们固定了菱形的行数的情况,如果需要根据自己的需求改变菱形的大小,则需要从键盘输入菱形的行数。但是在输入的时候,我们必须注意一个问题,因为菱形都是单数行,所以输入的数字必须是单数才可以。这里便需要用到判断,那如果输入的是双数就结束程序吗?显然这不是我们想要得到的结果,所以还会加入循环的内容。将判断作为循环的条件即可实现这一内容。 

row=eval(input("请输入菱形的行数:(必须为奇数)"))
while(row%2==0):
    print("请重新输入菱形的行数")
    row = eval(input("请输入菱形的行数:(必须为奇数)"))

 接下来根据我们刚才对菱形的拆分可以发现,菱形的上半部分的计算方式为(row//2+1),所以上半部分代码调整后为:

top_row=row//2+1   
for i in range(1,top_row+1):
    for j in range(1,top_row+1-i):
        print(" ",end=" ")
    for k in range(1,2*i):
        print("*",end=" ")
    print()

 下半部分的行数的计算方式为(row//2),下半部分代码调整为:

bottom_row=row//2
for i in range(1,bottom_row+1):
    for j in range(i):
        print(" ",end=" ")#打印空格直三角
    for k in range(1,2*(bottom_row+1-i)):
        print("*",end=" ")#打印倒三角
    print()
这样我们不需要去修改代码内容,从键盘输入菱形的行数便可以打印出相对应大小的菱形。运行效果如图所示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值