2014-09-04 2 views
-1

for 루프 내부의 문자열에서 공백을 제거하려고합니다. 공간을 추가하기 위해 작업을 수행 할 수 있었지만 제거는 작동하지 않습니다. 여기 파이썬 - 문자열에서 공백 =

내 코드입니다 :

letterHeight = 10 

def nLetter(): 
    x = 0 
    diagonal = "" 
    vertical = "   " 
    while x < letterHeight: 
     print "*"+diagonal+"*"+vertical+"*" 
     diagonal += " " 
     vertical -= " " 
     x += 1 

nLetter() 

오류 : TypeError: unsupported operand type(s) for -=: 'str' and 'str'

문자열은 빼기를 지원하지 않는

답변

5

; 어느 공간 중 하나를 제거해야합니까? 대신 슬라이스 사용

vertical = vertical[:-1] 

이 마지막 하나를 제외한 모든 문자에서 새로운 캐릭터를 생성하여 마지막 문자를 제거 : 당신은 문자열로 -= 연산자를 사용할 수 없습니다

>>> "abcd"[:-1] 
'abc' 
+0

신난다. 완벽하게 작동합니다. 문자열이 뺄셈을 지원하지 않는다는 것을 아는 것이 좋습니다. 그 이유는 무엇이며, 다른 언어에서 동일합니까? 감사. – Nicolas

+2

@Nicolas : 제거 할 요소가 무엇인지 모호하기 때문에 시퀀스 유형 (list, tuple, string)은 뺄셈을 지원하지 않습니다. 대부분의 언어는 이와 같은 시퀀스를 처리합니다. 마지막에 요소를 추가하기 만하면 추가하기가 쉽습니다. –

1

. 문자열에서 마지막 문자를 제거해야하는 경우 다음을 시도하십시오.

vertical = vertical[:-1] 
1

또는 문자열 형식을 사용해보십시오!

letterHeight = 10 

def nLetter(): 
    diagonal = 1 
    vertical = 10 
    for _ in range(letterHeight): 
     print("*{2:>{0}}{2:>{1}}".format(diagonal, vertical, "*")) 
     diagonal += 1 
     vertical -= 1 

nLetter() 

또는 약간 더

:

def nLetter(): 
    for mod in range(letterHeight): 
     print("*{2:>{0}}{2:>{1}}".format(1+mod, 10-mod, "*")) 
+0

@MartijnPieters 업데이트 해 주셔서 감사합니다. –