hyeonjin   2년 전

25글자 초과시 앞뒤11씩 자르고 남은 글자가

.Man이면 2문장

Man.이면 1문장

M.an 이면 2문장 으로 생각하고 아래와 같이 코드를 짰습니다.

제 생각에는 조건을 맞췄다고 생각했는데

제출을 하면 틀렸다고 나옵니다.

제가 계속 봐도 어느 부분이 틀린지 모르겠습니다. 도와주세요ㅜㅜ

hg7258   2년 전

치환되는 문자를

……를 쓰셨는데

이건 점 세개가 붙은 특수문자입니다.

직접 점을 찍어서 ...과 ......을 쓰셔야합니다

hyeonjin   2년 전

답변 감사합니다! 다만 바꾸어서 채점해보아도 결과는 틀렸다고 나옵니다ㅜㅜ

momiens   2년 전

s = s.replace(s[11:-11], "..."

이 부분이 잘못되었습니다.

s가 어떤 문자열이라고 할 때,

이것은 s의 인덱스 11부터 -11 바로 앞까지의 부분을 '...'로 바꾸라는 것이 아닙니다.

s의 인덱스 11부터 -11 바로 앞까지의 부분에 해당하는 어떤 문자열을 s에서 찾아서

첫 번째로 일치하는 부분을 '...'로 바꾸라는 것입니다. 전혀 다른 의미입니다.

즉 s가 '012345012345'라고 하고 s = s.replace(s[6:8], 'aa') 라고 하면

s[6:8]은 s의 가운데에 있는 '01'이라는 값이 됩니다.(가운데에 있는 '01'이 아니라

그냥 '01'이라는 문자열을 의미하는 것입니다) 그래서 s에서 '01'을 찾아서 'aa'로

바꾸라는 의미가 되기 때문에 'aa2345012345'가 반환됩니다.

hyeonjin   2년 전

감사합니다...저런뜻인지 몰랐었습니다

함수쓸때 뜻을 확실하게 알고 써야겠습니다

momiens   2년 전

이런... 바로 읽고 쓰다보니 저도 실수했습니다.

끝에 1이라고 붙여주면 처음 한 번만 치환을 시키지만 제가 쓴 것처럼

s.replace(s[6:8], 'aa') 라고 하면 s[6:8] 부분에 해당하는 문자열이

모두 'aa'로 치환되기 때문에 'aa2345aa2345'가 반환됩니다.

hyeonjin   2년 전

답변 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.