오늘은 코드카데미 파이썬(Codecademy Python) 강좌 해설 9번째 시간입니다. 이번 문제는 반복문 챕터의 [연습이 최고를 만든다]에 9번째 문제 [문자열검열(censor)] 입니다. 뭔가 제목만 봐서는 한글명칭, 영어명칭 둘 다 무엇을 하라는 얘기인지 잘 모르겠습니다.
함수 censor을 작성하고, 두 개의 문자열, text와 word를 입력값으로 받아 text 안의 word 부분을 별표로 바꿔서 출력하도록 구현하는 되는 문제입니다. 단, 이 문제는 한글 버전의 결과 테스트가 잘못된 것으로 보이며, 해당 내용은 아래 코드 설명 부분에 따로 적어 놓았습니다.
일단 완성된 코드를 보시면 아래와 같습니다.
1 2 3 4 5 6 7 8 9 10 | def censor(text, word): # censor을 선언 lt = text.split() # text입력값을 split한 후 lt에 할당 for i in range(0, len(lt)): # 반복문을 lt의 길이만큼 선언합니다. if lt[i] == word: # lt[i]가 word와 같다면 lt[i] = "*" * len(word) # lt[i]를 별표로 치환합니다. return " ".join(lt) # 연산이 끝난 lt를 조인한 후 반환 text=raw_input("Enter Text") # 사용자로부터 text 문자열을 입력 word=raw_input("Enter word") # 사용자로부터 word 문자열을 입력 print censor(text,word) # censor을 호출하고 결과값을 출력합니다. | cs |
- 1열 : text, word를 입력값으로 하는 함수 censor를 선언합니다. 여태까지 인자값이 2개인 함수는 별로 없었죠?
- 2열 : 문자열 text를 split하여 lt에 할당합니다. 이 부분은 힌트를 보시면 split과 join으로 구현하는 방법에 대한 내용이 있습니다.
- 3열 : i가 0부터 lt의 길이일 때까지 반복하도록 설정합니다.
- 4-5열 : lt[i]가 word와 같다면 해당 문자 부분을 별표(*)로 치환합니다.
- 6열 : 반복문이 종료된 후 완성된 join연산 과정을 걸쳐 결과값을 반환합니다. 영문 버전의 경우 for 반복문이 모두 종료된 후 return을 해야 하고 한글버전은 한 번만 계산한 후 바로 return해야 합니다.(즉, if문의 참조건이 실행되면 바로 return합니다.) 이 부분은 한글 버전의 결과 체크 부분에 오류가 있는 것으로 보입니다.
- 9-10열 : text와 word를 사용자로부터 입력받고 censor을 호출한 후 결과값을 출력합니다.
완성된 문제를 실행해 보면 위와 같은 결과값이 출력됩니다.
위 결과 화면은 영문 버전이구요. 한글버전은 결과값이 [this **** is wack hack]이라고 나와야 통과가 됩니다.
'프로그래밍 > 파이썬(Python)' 카테고리의 다른 글
코드카데미 파이썬(Codecademy Python) 강좌 – 요소의 갯수 세기(count) (0) | 2015.12.08 |
---|---|
코드카데미 과정별 한글 영문 페이지 링크 (0) | 2015.11.30 |
코드카데미 파이썬(Codecademy Python) 강좌 – 스크래블 게임(scrabble_score) (0) | 2015.11.26 |
코드카데미 파이썬(codecademy Python) 과정 완료 (0) | 2015.11.23 |
코드카데미 파이썬(Codecademy Python) 강좌 – 자음 걸러내기(anti_vowel) (0) | 2015.11.22 |