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'