연습문제 5-20에 오류가 있어 다음과 같이 정정한다.
잘못된 부분
이 함수는
seperator라는 이름으로
교정
이 함수는 separator 라는 이름으로
수정하는 이유
여러 개의 문자열을 연결해 반환하는 함수 concatenate()
를 정의하라. 이 함수는 separator
라는 이름으로 구분자 문자열을 전달받을 수 있는데, 문자열을 연결할 때 구분자를 각 문자열 사이에 끼워 넣어 반환한다. 예를 들면 다음과 같이 실행되어야 한다.
>>> concatenate('가난하다고', '해서', '외로움을', '모르겠는가', separator='/')
'가난하다고/해서/외로움을/모르겠는가'
>>> concatenate(*'월화수목금토일', separator=' - ')
'월 - 화 - 수 - 목 - 금 - 토 - 일'
코드
def concatenate(*strings, separator):
"""여러 개의 문자열을 연결해 반환한다. 문자열을 연결할 때 구분자를 각 문자열 사이에 끼워 넣는다."""
return separator.join(strings)
# 함수의 동작 확인
print(concatenate('가난하다고', '해서', '외로움을', '모르겠는가', separator='/'))
print(concatenate(*'월화수목금토일', separator=' - '))
실행 결과
가난하다고/해서/외로움을/모르겠는가
월 - 화 - 수 - 목 - 금 - 토 - 일
*args
와 같이 패킹을 이용하면 된다. 답안에서는 인자의 성격이 '문자열'이므로 매개변수의 이름을 strings
로 정의했다. *strings
와 같이 변수명 앞에 *
기호를 붙여주면 패킹 매개변수가 된다.separator
도 함께 정의해야 한다.separator.join(문자열들을_담은_시퀀스)
와 같은 형태로 join()
메서드를 사용하면 된다.