2016-06-10 295 views
-4

我的问题是,我必须在屏幕中间使字母金字塔。输出必须是15个级别的金字塔。这项任务必须根据定义完成。输出应该像Python金字塔与字母

   a 
      aba 
      abcba 
      abcdcba 
      abcdedcba 
     abcdefedbca 
     abcdefgfedcba 
     abcdefghgfedcba 
     abcdefghihgfedcba 
    abcdefghijihgfedcba 
    abcdefghijkjihgfedcba 
    abcdefghijklkjihgfedcba 
    abcdefghijklmlkjihgfedcba 
abcdefghijklmnmlkjihgfedcba 
abcdefghijklmnonmlkjihgfedcba 

我已经产生了一些代码,但它不工作。任何人都可以帮我吗?

def print_a_to_y(): 
    palindrome="" 
    for i in range (ord('a'),ord('z')): 
     palindrome = palindrome+ chr(i) 
    return palindrome 


def print_y_to_a(): 
    palindrome="" 
    for i in range (ord('z'),ord('a')-1, -1): 
     palindrome += chr(i) 
    return palindrome 


def palin(): 
    paal = print_a_to_y() + 'z' + print_y_to_a() 
    print paal 

def pyramid (levels=15): 
    for i in range (levels): 
     print palin (levels-i-1) + palin (2*i+1) 

pyramid() 
+1

什么是不工作?提供一些描述 – Leva7

+0

只是为了获得一行代码:'print('\ n'.join('{0:。> {2}} {1:。<{2}}'.format(string.ascii_lowercase [: current_line],(string.ascii_lowercase [:: - 1] +'')[ - current_line:],levels)为范围内的current_line(1,levels + 1)))' – Matthias

回答

0

Tolen, 你有几个小错误,并在功能一个逻辑问题

print_y_to_a() 

注意,这个功能产生以Z开头的字符串,但你想连接你的字符串中反向您的其他功能print_a_to_y()停止(+1位置)。例如:

abc -> comes from print_a_to_y() 
ba -> should come from print_y_to_a(). 

另外请注意,您需要添加新行字符“\ n”以实现一些不错的输出。

这里是我的解决方案:

def print_a_to_y(lev): 
    palindrome="" 
    counter=0 
for i in range (ord('a'),ord('z')): 
    if counter<=lev: 
     palindrome = palindrome+ chr(i) 
     counter+=1 
    else: 
     pass 
return palindrome 

def print_y_to_a(cut): 
    palindrome="" 
for i in range (ord('z'),ord('a')-1, -1): 
    palindrome = palindrome + chr(i) 
return palindrome[-cut:] 

def palin (lev): 
    paal = print_a_to_y(lev) + print_y_to_a(lev) 
return paal 

def pyramid (levels=15): 
    res="" 
for i in range (levels): 
    if i==0: 
     res=print_a_to_y(i)+"\n" 
    elif i>0: 
     res= res + str(palin(i)) + "\n" 
    else: 
     pass 
return res 

print pyramid() 

还需要return语句在函数结束,否则“无”将是你的屏幕上。

干杯,希望这有助于。 Viktor

+0

非常感谢! –

+0

你好,托伦。如果答案在你想要的地方,请不要忘记举起投票。 Thx,再见。 –