[题目描述]
请打印输出一个字符金字塔,字符金字塔的特征请参考样例。
输入格式:
输入一个字母,保证是大写。
输出格式:
输出一个字母金字塔,输出样式见样例。
样例输入
C
样例输出
A
ABA ABCBA
来源/分类(难度系数:一星)
完整代码展示:
a=input()
b=['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']
for i in range(0,len(b)):
if b[i]==a:
c=b[0:i+1]
d=c[:]
d.remove(d[-1])
d.reverse()
e=0
s=len(d)
while e<len(d)+1:
f=c[0:e+1]
g=f[0:e]
g.reverse()
h=f+g
space=" "
sum=""
for j in range(0,len(h)):
sum+=h[j]
print("{}{}".format(space*s,sum))
s-=1
e+=1
代码解释:
“a=input()
b=['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'] ”,让用户输入所求字符金字塔底边中心的字符。建立一个列表b,用于储存A~Z的26个字符。
“for i in range(0,len(b)):
if b[i]==a:
c=b[0:i+1]
d=c[:]
d.remove(d[-1])
d.reverse() ”,依次遍历列表b中的所有元素,查找是否存在与用户输入的字符相同的元素。如果存在,则截取b[0]到该元素的列表切片。复制列表c为d,删除列表d的末尾,然后反转列表d。
“e=0
s=len(d)
while e<len(d)+1:
f=c[0:e+1]
g=f[0:e]
g.reverse()
h=f+g
space=" "
sum=""
for j in range(0,len(h)):
sum+=h[j]
print("{}{}".format(space*s,sum))
s-=1
e+=1 ”,令循环密码子为e,并将其初始值设为0。令s==len(d)。当e<len(d)+1时,令f为c[0:e+1,g为c[0:e]]的列表切片,接着将g反转,连接列表f,g(注意:f在前,g在后,顺序不能随意改变)为h。令space为一个空格键,建立一个空字符串sum,从左至右依次连接列表d中所有元素。连接完成后,打印s个space和sum(两者之间不插入空格),每循环一次,就令s-=1,e+=1(s减1,e加1),直至e==len(d)+1,跳出整个while循环。
运行效果展示:
(声明:以上内容均为原创)