2016-11-18 1 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의 논리를 업데이트합니다. 출력물을 피라미드 형태로 인쇄하는 아이디어는 알파벳 위치에 따라 ' '을 곱하는 것입니다. 따라서,이 같이 쓸 수있다 : independen 코드 예제의 다음

 a 
    aba 
    abcba 
    abcdcba 
abcdedcba 
0

몇 가지 제안을 :로 출력을 인쇄

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` 

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 : 최소한의 코드 예제 만 게시하면 많은 도움이됩니다. 보통 당신의 포인트는 더 명확 해집니다.

관련 문제