Bootstrap

python输出字母金字塔_Python 2.7-打印由字母组成的金字塔,具有给定的层数

我的问题几乎与Python的字母金字塔相同。我想要与该问题相同的输出,即由字母组成的金字塔。所需的输出:

a

aba

abcba

abcdcba

abcdedcba

abcdefedbca

abcdefgfedcba

abcdefghgfedcba

abcdefghihgfedcba

abcdefghijihgfedcba

abcdefghijkjihgfedcba

abcdefghijklkjihgfedcba

abcdefghijklmlkjihgfedcba

abcdefghijklmnmlkjihgfedcba

abcdefghijklmnonmlkjihgfedcba

OP在该问题中提供的代码是:

defpyramid():formiddle_letterinrange(ord("a"),ord("o")+1):forletterinrange(ord("a"),ord(middle_letter)+1):printchr(letter),forletterinreversed(range(ord("a"),ord(middle_letter))):printchr(letter),middle_letter+=1pyramid()

此代码不提供所需的输出。代码中的函数也不使用任何参数。该问题的答案导入了现代的print()功能,但我不允许这样做。我不允许使用任何导入功能,并且我必须坚持使用python 2.7。要求是我必须使用带有参数的函数,金字塔的期望结果必须具有15个级别,并且屏幕宽度为80个字符。

我尝试使用带有参数的函数来在屏幕中间打印一个字母,范围为15,现在我可以在一行中间打印一个字母,但是我不知道如何制作从a到aba再到abcba等

deflevel_center(letter):foriinrange(15):middle=letter.center(80)printmiddle

level_center('b')

使用我的代码,我得到的输出是:

b

b

b

b

b

b

b

b

b

b

b

b

b

b

b

我知道使用我当前的函数,调用level_center()只会在每个级别上打印一个字母。但是我不知道从这里去哪里。

如何以其他方式改进我的OP代码或我的代码,以便在坚持要求的同时获得期望的结果(使用带参数的功能,屏幕宽度为80个字符,15层的功能必须在没有导入功能的情况下工作(从将来开始)导入print_function行))?

解决方案

我认为这是最有效的方法。

defpyramid(alphabet,layer=1):whilelayer<=15:# alphabet[:15] goes 0 to 14temp_alphabet=alphabet[:layer]pyramid_layer=''.join([letterforletterintemp_alphabet]+[letterforletterinreversed(temp_alphabet[:-1])])print('{:^32}'.format(pyramid_layer))layer+=1alphabet=list(map(chr,range(97,123)))pyramid(alphabet)

说明:

alphabet是传递给函数的字母字符的列表。

循环直到第15个字符=>'o'。

存储一个临时字母,直到对应的字母layer-在while循环中动态变化。

使用列表理解功能创建2个列表。首先将字母向前,然后将字母向后(最后一个字母除外)以避免重复。添加这些列表,并' '.join( )形成一个字符串(对应于layer),其中每个字符都用空格分隔。

格式化图层字符串,使其居中放置在32单位宽的字段中并进行打印。这样可以确保图层居中形成金字塔。您可以选择任何宽度单位值。

增加layer变量以最终退出while循环。

输出:

a

aba

abcba

abcdcba

abcdedcba

abcdefedcba

abcdefgfedcba

abcdefghgfedcba

abcdefghihgfedcba

abcdefghijihgfedcba

abcdefghijkjihgfedcba

abcdefghijklkjihgfedcba

abcdefghijklmlkjihgfedcba

abcdefghijklmnmlkjihgfedcba

abcdefghijklmnonmlkjihgfedcba

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;