2015-01-10 4 views
-2

다음 코드는 모든 단어의 첫 번째 문자를 삭제하려고하지만 내 코드는 마지막 단어의 첫 번째 문자 만 삭제합니다. 어떻게하면 모든 단어의 모든 첫 문자가 삭제되도록 할 수 있습니다.문자열의 char 바꾸기

ejmin = "ej pj dj" 
tfl = [0,] 
nw = '' 

for i in range(len(ejmin)): 
     if ejmin[i] == ' ': 
     i = i + 1 
     tfl.append(i) 

for i in tfl: 
     nw = ejmin.replace(ejmin[i], "") 
print nw 
+0

슬라이스하여 시도 @YuHao 그것이 내가 내 대답은 그것을 확인 편집 –

+0

입니다 예하시기 바랍니다 . –

답변

2

은 당신의 코드에 많은 문제가 있지만 버그의 목적을 위해 키를 한 루프를 통해 때마다 당신이 그것에 이전의 모든 할당을 덮어 nw에 할당하는 것입니다. 그럼, 물론, 마지막 할당 문제!

버그를 수정하면 더 많은 버그가 계속해서 나타납니다. 코드의 작은 부분에 얼마나 많은 문제를 해결했는지 놀랍습니다. 예를 들어 nw 대신 ejmin에 할당하면 모든 추가 지표가 깨질 수 있습니다. 또한 ejmin.replace(ejmin[i]은 "i의 문자"를 대체하지 않습니다 -이 해당 문자와 ​​일치 할 때마다 을 대체합니다. & c -이 코드는 거의 답답하지 않습니다.

문자열을 변경할 수 없으므로 문자열을 변경할 수 없으므로 문자열을 변경할 수 없다는 핵심 아이디어에 따라 처음부터 다시 작성하는 것이 좋습니다 (여러 편집을 문자열에 적용하는 것은 어려움). 그래서, 편집, 시작에서 목록으로 문자열을 할 때 문자열로 다시합니다

ejmin = "ej pj dj" 
aslist = list(ejmin) 
aslist[0] = '' 
for i, c in enumerate(aslist): 
    if c == ' ': aslist[i] = '' 
nw = ''.join(aslist) 
+0

그래서 어떻게 모든 단어의 첫 번째 문자를 대체 할 수 있습니까? 버그가 무엇인지 이해하지만 문제를 해결하는 방법은 무엇입니까? –

+0

@EjminMehranian, 나는 코드를 사용하여 실제 문제 나 잠재적 인 문제를 나열하고 (다른 문제를 설명하기 위해) 문자열이 불변이고 목록이 변경 될 수 있다는 핵심 사실을 기반으로 한 훨씬 더 간단한 접근법입니다. –

0
ejmin = "ej pj dj" 
a=ejmin.split() #split it by space 
for x in a: 
    t=x[1:] #slicing it from first character to end of word 
    print (t) 

출력 :

>>> 
j 
j 
j 
>>> 

는 공백 문자로 그들을 분할하고, 슬라이스 첫 번째 문자에서.

편집 :

ejmin = "ej pj dj" 
a=ejmin.split() 
for x in a: 
    z=x[0] 
    h=x+z 
    print (h) 

출력 :

>>> 
eje 
pjp 
djd 
>>> 
+0

이 단어 문제는 내가 문장을 "안녕하세요 세계 어떻게"나는 "elloh orldw owh"쓰기 프로그램을 만들려고하는 경우 같이 단어 끝에 그들을 추가하려고하기 때문에 해당 문자를 저장할 필요가 –

+0

내 편집을 확인하십시오 –

+2

@EjminMehranian, 이제 갑자기 실제 문제가 매우 다름을 드러내고 있습니다 (아마도 가장 좋은 답변을내는 가능성이 너무 큽니다) - ** 매우 ** 스택 오버플로 에티켓이 좋지 않습니다. 당신이 제기 한이 Q **를 다루십시오 **. 실제로 해결하고 싶은 것을 위해 다른 하나를 열고 처음에 우리에게 말하지 않기로 결정했습니다! –

0

내가

ejmin = "ej pj dj" 
for word in ejmin.split(): 
    print word[1:],