2016-06-10 294 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,再見。 –