打印三角形的问题

本文介绍了如何使用Python打印倒置的等腰直角三角形,通过分析和思考,利用range()函数的逆序特性及乘法操作简化代码,达到输出目标。并分享了学习过程中解决问题的经验和技巧。
摘要由CSDN通过智能技术生成
for j in range(7):
    for i in range(j):
        print('*',end='')
    print()

输出:

*
**
***
****
*****
******

如何把这个三角形掉过来打印呢?

分析一下,最关键的是第一层循环中的range(7)。现在需要一个list,是[7,6,5,4,3,2,1]

for j in [7,6,5,4,3,2,1]:
    for i in range(j):
        print('*',end='')
    print()
*******
******
*****
****
***
**
*

哈哈,实现了。虽然直接穷举list,显得有点笨。

参考了这位同学的文章https://blog.csdn.net/CaoMei_HuaCha/article/details/80873917,可以将上述的list改写成range(7,0,-1)

那如何输出下图呢?

 先做个分析

1. 等腰直角三角形的两边都是5个*

2.对于每一行而言,第一行是5个*;第二行,只有第一列和最后一列有*……最后一行只有一个*

3. 一般的,对于第i行(1 < i < N),第一列打印*,中间打印i-2个*(这点用循环实现),最后打印一个*。对于第N行和最后一行,直接打印*

def print_tri(num):
    if num < 3:
        print('We can not print this triangle.')
    else:
        for i in range(num):
            print('*',end='')
        print()
        for row in range(num-1,1,-1):
            print('*',end='')
            for j in range(1,row-1):
                print(' ',end='')
            print('*')
        print('*')

print_tri(5)

计算结果:

*****
*  *
* *
**
*

成功啦!开心。

看了别人的解答,原来还有更简洁的办法,太厉害!

我麻烦的地方,是打印重复东西的时候,用了for循环。其实可以直接用(要打印的东西)*n来解决。

于是,修改一下代码:

def print_tri(num):
    if num < 3:
        print('We can not print this triangle.')
    else:
        print('*'*num)
        for row in range(num-1,1,-1):
            print('*'+' '*(row-2)+'*')
        print('*')

print_tri(5)

得到了同样的答案:

*****
*  *
* *
**
*

好棒!

优选答案用的是while循环https://mp.weixin.qq.com/s/1VVWI-JKu-fwdcpkmonIgA,我觉得用for循环也很棒!

总结下:

1. 用range构建一个逆序的形式:range(大的数字,小的数字,-1)

2.处理(打印)相同的内容,可以考虑*N

3. 遇到问题,一定要观察和分析。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值