2016-11-18 54 views
-3

我有一個我輸出的字母列表,它工作正常。現在,我想把它變成金字塔形狀。製作一個金字塔形狀的序列給出了錯誤

這是我收到的錯誤:我人在使用這看到

def pyramid(latest_letter): 
for letter in range(102,latest_letter): 
     print(first_part_of_letters(letter) *' ' + second_part_of_letters(letter-2)) * '* ' 

TypeError: can't multiply sequence by non-int of type 'str'  

我已經注意到,我需要一個空間來繁殖的結果,這樣的做一個金字塔形狀,所以我不明白爲什麼這不起作用。我應該首先將序列轉換爲字符串嗎?我不想更改這個功能。

+1

你正在得到的錯誤是因爲''first_part_of_letters(字母)*''',因爲你試圖用''''乘以'string'。字符串的乘法只能用'int'的值執行 –

+0

我認爲你幾個小時前已經問過同一個問題,並且你刪除了它。你在這個問題上已經回答了你的問題,那麼你爲什麼又要問了? – Jalo

+0

@Jalo:我從不刪除問題。如果我願意,我的帳戶將被阻止,所以你錯了。如果我有一個答案,我不會再問它;) – Siyah

回答

1

由於我相信這是繼續問你問How make this for loop work?的問題。在這裏,我正在更新my original answer中的邏輯以生成金字塔。想要以金字塔形式打印輸出的想法是根據字母的位置乘以' '。因此,可以寫成:

import string 
alphs = string.ascii_lowercase # returns string of lower case characters 
last_letter = 'f' 
index = alphs.index(last_letter) # get index of the `last_letter` 

for i in range(index): 
    print ' '*(index-i-1), alphs[:i]+alphs[i::-1] 
#  ^print ` ` blank space based on the value of `index - i-1` 

其打印輸出:

 a 
    aba 
    abcba 
    abcdcba 
abcdedcba 
0

這裏一些建議個獨立的代碼示例:

letters=['A','B','C','D','E','F','G','H','I'] 

ind =0 
width =1 

while ind+width<len(letters): 
    print(letters[ind:ind+width]) 
    ind+=width 
    width+=1 
print(letters[ind:]) 

這使輸出:

['A'] 
['B', 'C'] 
['D', 'E', 'F'] 
['G', 'H', 'I'] 

對於未來p主機: 當您發佈代碼的最小范例時,它會有很大的幫助。通常你的分數越來越清晰