Python中的字母金字塔程序

Python中的字母金字塔程序,python,list,python-2.7,for-loop,Python,List,Python 2.7,For Loop,有一个程序要求用户输入一个字母。使用嵌套循环生成如下金字塔图案: A ABA ABCBA ABCDCBA ABCDEDCBA ABCDCBA ABCBA ABA A 模式应扩展到输入的字符。例如,前面的模式将由输入值E或E生成 这是我到目前为止所做的,它几乎给出了钻石右下角有轻微缺陷的图案 L=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R',

有一个程序要求用户输入一个字母。使用嵌套循环生成如下金字塔图案:

    A

   ABA

  ABCBA

 ABCDCBA

ABCDEDCBA

 ABCDCBA

  ABCBA

   ABA

    A
模式应扩展到输入的字符。例如,前面的模式将由输入值E或E生成

这是我到目前为止所做的,它几乎给出了钻石右下角有轻微缺陷的图案

L=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

letter=raw_input('Enter letter:')

g=letter.upper()

if g in L:

    f=L.index(g)

a=f+1

for k in range(a,0,-1):

        b=L[:a-k+1]

        d=L[:a-k]

        L3=[x for x in d]

        e=L3[::-1]

        print ' '*k + '%s'%''.join(b) + '%s'%''.join(e)

for k in range(a):

           d=L[:a-1-k]

           b=L[:a-k-1]

           L3=[x for x in b]

           e=L3[::-1]

           print ' '*(k+2) + '%s'%''.join(d) + '%s'%''.join(e)
我得到的是这样的东西

    A

   ABA

  ABCBA

 ABCDCBA

ABCDEDCBA

 ABCDDCBA

  ABCCBA

   ABBA

    AA   

执行金字塔的一半,然后反转数组并打印,不使用最后一个(现在是第一个)元素。

可能有不同的方法可以有效地执行此操作,但这里有一个简单易懂的解决方案(基本循环)

letter = raw_input('Enter Input: ')
if (len(letter) == 1):
    if (letter.isalpha()):
        # Retrieve the positon of the input letter 
        pos = ord(letter.upper()) - 64

        # Prints upper part of the diamond
        for i in range(1, pos + 1):
            # Prints leading spaces for upper pyramid
            for j in range(pos -  i,  0,  -1):
                print(" "),
            # Print numbers
            # 2 for loops to print ascending and descending letters in a single row
            for j in range(0, i):
                print(chr(65+j)),
            for j in range(i-1 , 0, -1):
                print(chr(64+j)),
            print       

        # Prints lower part of the diamond, This is just the reverse of the upper one
        for i in range(pos -1 , 0, -1):
            # Print leading space for lower pyramid
            for j in range(pos - i, 0, -1):
                print(" "),
            for j in range(0, i):
                print(chr(65+j)),
            for j in range(i-1 , 0, -1):
                print(chr(64+j)),
            print       
    else:
        print 'input a letter from the alphabet only'
else:
    print 'enter one letter only'