이제 문제를 해결해 보자.
문제는 이전에 올린 글 에서 확인할 수 있다.
루프에서 사용할 변수명은 swap_type이다. 교환 유형을 말하는 것이다. 이처럼 변수명은 누가 봐도 이해할 수 있게 작성해야 합니다. (변수명이나 코드를 표현할 수 없은 도메인에 관한 것들은 주석으로 남긴다.)
우선 책에 있는 코드를 보자.
코드를 보자.
1. 교환에 대한 문자열이 입력된다.
2. 볼은 1번 위치에 있다.
3. 만약 교환 유형이 A이고 볼이 1에 있다면, 볼은 2에 위치하게 된다.
4. 만약 교환 유형이 A이고 볼이 2에 있다면, 볼은 1에 위치하게 된다.
5. 만약 교환 유형이 B이고 볼이 2에 있다면, 볼은 3에 위치하게 된다.
6. 만약 교환 유형이 B이고 볼이 3에 있다면, 볼은 2에 위치하게 된다.
7. 만약 교환 유형이 C이고 볼이 3에 있다면, 볼은 1에 위치하게 된다.
8. 만약 교환 유형이 C이고 볼이 1에 있다면, 볼은 3에 위치하게 된다.
9. 볼의 위치를 출력하라.
덧, 여기에서 교환 유형 A는 위치 3에 영향을 주지 않고, 교환 유형 B는 위치 1에, 교환 유형 C는 위치 2에 영향을 주지 않는다.
문제를 해결하였다. 그런데, 이 코드가 잘 짜여진 코드인가?
파이썬 공부를 하며 선생님이 매일 가장 강조하는 이야기는 '코드가 가역적인가?'이다.
and로 이어진 문장보다 훨씬 가독성이 좋은 코드인 것 같다. 그리고 무엇보다 코드만 읽고도 어떤 문제를 해결하고자 하는지 이해할 수 있다.
덧, D.R.Y Don't Repeat Yourself 코딩할 때 기본 원칙
덧, 프로그램이 잘못된 로직에 따라 잘못된 답을 생성하는 오류를 '버르'라고 한다.
덧, 버그를 수정하기 위해 코드를 작성하는 것을 '디버깅'이라고 한다.
반응형
'Python 배우기' 카테고리의 다른 글
[외계어 배우기] 반복문(문제#6 Occupied Spaces) (0) | 2024.02.26 |
---|---|
[외계어 배우기] 연습문제 (1) | 2024.02.24 |
[외계어 배우기] 반복문(문제#5 Three Cups) (0) | 2024.02.20 |
[외계어 배우기] Happy or Sad (0) | 2024.02.18 |
[외계어 배우기] An Honest Day's Work (0) | 2024.02.14 |