우리 몸은 DNA를 담고 있는 세포로 이루어져 있어요. 이 세포들은 주기적으로 닳아서 교체가 필요한데, 딸세포로 분열하면서 스스로를 교체해요. 실제로 평균적인 사람의 몸은 평생 동안 약 10,000조 번의 세포 분열을 겪어요!
세포가 분열할 때는 DNA도 함께 복제돼요. 때때로 이 과정에서 실수가 생겨 DNA 조각 하나하나에 잘못된 정보가 담기기도 해요. DNA 두 가닥을 비교해서 서로 다른 부분을 세어 보면 실수가 몇 번 일어났는지 알 수 있어요. 이것을 "해밍 거리"라고 해요.
해밍 거리는 생물학뿐만 아니라 과학의 여러 분야에서 유용하게 쓰여서, 알아 두면 좋은 용어예요 :)
두 DNA 가닥 사이의 해밍 거리를 계산해요.
DNA는 C, A, G, T 네 글자로 읽어요. 두 가닥은 다음과 같이 생겼을 수 있어요:
GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^ ^ ^ ^^
두 가닥에는 7개의 차이가 있어요. 따라서 해밍 거리는 7이에요.
해밍 거리는 길이가 같은 서열에 대해서만 정의돼요. 따라서 길이가 다른 서열 사이에서는 계산할 수 없어요.
때로는 예외를 발생시켜야 하는 경우가 있어요. 이럴 때는 오류의 원인이 무엇인지 알려 주는 의미 있는 오류 메시지를 항상 함께 넣어야 해요. 그래야 코드를 읽기 쉬워지고 디버깅에도 큰 도움이 돼요. 오류의 원인이 어떤 유형인지 알고 있는 상황이라면 내장 오류 유형 중 하나를 발생시켜도 되지만, 그때도 의미 있는 메시지는 꼭 넣어야 해요.
이 연습 문제에서는 검사하는 가닥의 길이가 서로 다를 때 raise 문을 사용해 ValueError를 "던져야" 해요. 테스트는 exception을 raise하면서 메시지도 함께 넣어야만 통과해요.
메시지와 함께 ValueError를 발생시키려면, 메시지를 exception 타입의 인자로 써요:
# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Exercism에 가입하고 Python 트랙을 개념 17개연습 문제 146개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.