Python中的字母金字塔程序

0 投票
2 回答
3815 浏览
提问于 2025-04-18 08:25

有一个程序需要用户输入一个字母。使用嵌套循环来生成一个像这样的金字塔形状:

    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   

2 个回答

0

先打印出一半的金字塔,然后把这个数组反转过来,最后打印出来的时候不要打印最后一个元素(现在变成第一个元素了)。

1

可能有不同的方法可以高效地完成这个任务,但这里有一个简单易懂的解决方案(基本的循环)

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'

撰写回答