숫자로 이루어진 문자열이 주어지면, 그 문자열에서 길이가 n인 모든 연속 부분 문자열을 나타나는 순서대로 출력해요.
예를 들어, 문자열 "49142"에는 다음과 같은 3자리 연속열이 있어요:
그리고 다음과 같은 4자리 연속열도 있어요:
5자리 문자열에서 6자리 연속열을 달라고 하면, 어떤 결과가 나오든 감수해야 해요.
이 연속열은 입력에서 _서로 인접한 위치_를 차지하기만 하면 되고, 숫자가 _수적으로 연속_일 필요는 없다는 점에 유의해요.
때로는 예외를 발생시켜야 하는 경우도 있어요. 이때는 오류의 원인이 무엇인지 알려 주는 의미 있는 오류 메시지를 항상 함께 넣어야 해요. 그래야 코드를 읽기 쉬워지고 디버깅에도 큰 도움이 돼요. 오류의 원인이 특정 유형이라고 확실한 상황이라면 내장 오류 유형 중 하나를 발생시켜도 되지만, 그때도 의미 있는 메시지는 꼭 넣어야 해요.
이 연습 문제에서는 slice() 함수에 입력한 시리즈나 길이 매개변수가 비어 있거나 범위를 벗어난 경우, raise 문을 사용해 ValueError를 "던져야" 해요. exception을 raise하고 메시지도 함께 넣어야만 테스트가 통과해요.
메시지와 함께 ValueError를 발생시키려면, 메시지를 exception 타입의 인자로 써요:
# if the slice length is zero.
raise ValueError("slice length cannot be zero")
# if the slice length is negative.
raise ValueError("slice length cannot be negative")
# if the series provided is empty.
raise ValueError("series cannot be empty")
# if the slice length is longer than the series.
raise ValueError("slice length cannot be greater than series length")
Exercism에 가입하고 Python 트랙을 개념 17개연습 문제 146개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.