Python中的字母金字塔程序

2024-10-01 13:44:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

    A

   ABA

  ABCBA

 ABCDCBA

ABCDEDCBA

 ABCDCBA

  ABCBA

   ABA

    A

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

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

^{pr2}$

我得到的是这样的东西

    A

   ABA

  ABCBA

 ABCDCBA

ABCDEDCBA

 ABCDDCBA

  ABCCBA

   ABBA

    AA   

Tags: 用户程序字母模式字符嵌套循环图案钻石
2条回答

将棱锥体减半,然后反转数组并打印最后一个(现在是第一个)元素。在

可能有不同的方法来有效地实现这一点,但这里有一个简单、易于理解的解决方案(基本循环)

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'

相关问题 更多 >