[每日一题]29、生成一个由字母组成的三角形

点击上方“Python3X”,选择“置顶或者星标”

第一时间收到精彩推送!

Python Every Day, 第 29 天


用Python生成一个高28行由字母组成的等腰三角形,效果如下图所示

                           A
                          ABA
                         ABCBA
                        ABCDCBA
                       ABCDEDCBA
                      ABCDEFEDCBA
                     ABCDEFGFEDCBA
                    ABCDEFGHGFEDCBA
                   ABCDEFGHIHGFEDCBA
                  ABCDEFGHIJIHGFEDCBA
                 ABCDEFGHIJKJIHGFEDCBA
                ABCDEFGHIJKLKJIHGFEDCBA
               ABCDEFGHIJKLMLKJIHGFEDCBA
              ABCDEFGHIJKLMNMLKJIHGFEDCBA
             ABCDEFGHIJKLMNONMLKJIHGFEDCBA
            ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
           ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
          ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
         ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
        ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
       ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
      ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
     ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
    ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
   ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
  ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
 ABCDEFGHIJKLMNOPQRSTUVWXYZAZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZABAZYXWVUTSRQPONMLKJIHGFEDCBA

注意项:

1、需要注意每行前面的空格数

2、每一行都是对称的

3、列表分片的操作

4、单行在26个字母范围内,和超过之后需要补齐

代码如下:

def triangle(row):
    # %c 用于格式化ascii码
    # alphabet = ['%c' % i for i in range(65, 65 + 26)]
    # 或者通过下面的方法也可以生成一个字母列表
    import string
    alphabet = [i for i in string.ascii_uppercase]
    for i in range(1, row + 1):
        # 26个字母以内的情况
        if i <= 26:
            string = ''.join(alphabet[:i] + list(reversed(alphabet[:i - 1])))

        else:
            # 超出26个字母以后,顺次累加
            j = i - 26
            string = alphabet + alphabet[:j] + list(reversed(alphabet + alphabet[:j - 1]))
            string = ''.join(string)
        print(' ' * (row - i) + string)

triangle(28)

大家可以先自己思考一下,或者配合debug模式运行一遍,对理解会有很大的帮助。


以上,便是今天的分享,希望大家喜欢,觉得内容不错的,欢迎点击「在看」支持,谢谢各位。

640?wx_fmt=jpeg

如需查看更多[Python Every Day]系列,请点击我的主页的【每日一题】菜单。

640?

感谢您的阅读

640?wx_fmt=gif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值