2016-11-18 2 views
-3

У меня есть список букв, которые я выводил, который отлично работает. Теперь я хочу превратить его в форму пирамиды.Создание формы пирамиды последовательности дает ошибку

Это ошибка я получаю:

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

Я заметил, что мне нужно умножить результаты с пространством, как это:

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

Я видел людей, используя это сделайте форму пирамиды, поэтому я не понимаю, почему это не работает. Должен ли я сначала преобразовать последовательность в строку? Я не хочу так сильно изменять эту функцию.

+1

Ошибка, которую вы получаете, связана с 'first_part_of_letters (letter) * ''', поскольку ваша попытка умножает '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

Вот некоторые предложения independen ваших примеров кода:

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 osts: Это помогает, когда вы публикуете рабочий минимальный пример кода. Обычно ваши очки становятся яснее, а затем