미국 공학박사 아빠의 코딩 연구소

다른 마커로 로봇 위치들을 보여주기

로봇의 위치에 따라 마커를 다르게 보여주는 방법을 공부해 볼까해요. 예를 들어, 시작점은 별 모양의 작은 크기인데, 점점 커지다가 도착점에서는 다이아몬드의 큰 마커를 보여주는 식인 것이죠.
이를 위해서는 각 위치 조건을 다르게 처리하기 위한 if 문이 필요하답니다.


강의들은 모두 무료입니다. 단, 저작권은 키클 코딩랩 에 있으며, 무단 복제 및 배포를 엄금합니다.
이를 어길 시, 본 사이트의 서버가 미국에 있으므로, 미국법에 의해 처벌될 수도 있습니다.




figure 셋업하기

새로운 Python코딩을 하고자 하니, 역시나 새로운 Python파일을 만들어 봐야 겠죠?
이제 다들 어떻게 하는지 대충 안다고 가정할게요. (복습이 필요한 사람들은 여기로 가보세요.)
원하는 폴더 위치로 들어갔나요? gedit 문서편집기를 이용해서 아래와 같이 새로운 파일을 생성해 보지요.

이제 코딩을 해 볼까요?
이번에도 그래프를 만들 거니까, matplotlib를 사용할 거예요. 이전과 같은 방식으로, import를 이용해서 matplotlib의 pyplot 객체를 plt라는 별명을 통해 사용할 것이라고 선언해 보지요.
그리고 아래처럼, 로봇의 (x, y) 좌표 여덟 개를 리스트를 이용해서 정해 보세요.

리스트에 대한 복습이 필요하면, 문법 노트 가서 확인해 보세요.

이번 강의에서도 그래프를 이용할 거예요.
그렇다면, 먼저 figure를 만들어야 하겠죠? figure는 그래프를 담는 창이라고 생각하면 된다고 했죠?
figure가 무엇인지 직접 확인해 보고 싶다면, 이전 강의에서 figure를 확인하는 내용을 살짝 보고 오세요.
아래와 줄6에서와 같이, pyplot객체의 figure() 함수를 이용해서 figure를 생성해 보지요.

줄7과 줄8에서는 미리 정해둔 x, y 좌표의 최대값과 최소값을 고려해서 보여줄 그래프 축들의 범위를 xlim()과 ylim()함수를 이용하여 설정했답니다.




if 문 공부하기

이제, 로봇의 각 위치에 따라 마커를 다르게 설정할 것인데요, 각 위치를 하나씩 확인해 가야 되니, 이번 강의에서도 for 루프를 돌리기로 하지요.

이전 강의에서 for 루프를 다루려면, range 객체를 알아야 된다고 했지요?
다시 설명하면, range(num)이라고 코딩을 하면, 0에서 num-1까지의 정수들을 저장하고 있는 range 객체가 생성이 된답니다.
예를 들어, t = range(4)라고 하면, t는 0, 1, 2, 3이라는 네 정수들을 저장하고 있는 range 객체가 되는 것이죠.
그리고, 저장되어 있는 각 정수들을 참조(빼서 사용)하려면, 리스트에서와 같은 형태로 사용하면 되요. 즉, t[0], t[3]등으로 사용하는 것이죠.
for 루프는 순차적으로 증가하는 정수를 토대로 코딩을 하는 경우가 많은 데, range가 그 순차적으로 증가하는 정수들을 제공해 준답니다.

자, 그럼 range를 염두에 두고, for 루프를 어떻게 코딩하는지 문법 노트에서 발췌해서 복습해 보지요.

[문법] For loop

이제, for 루프를 복습했으니, 아래 줄10처럼 로봇의 각 위치들을 처리하기 위해 for 루프의 첫 줄을 코딩해 보지요.
줄3~4에서 로봇의 위치 좌표를 여덟개를 정했었지요? 그래서 range(8)을 for 루프에서 사용했어요. 그리고 range(8)에 저장되어 있는 값들, 즉, 0~7,은 i라는 변수 이름으로 for 루프안에서 받아서 사용할 거랍니다.

자, 이제 로봇의 각 위치 조건에 따라 다른 마커를 사용할 것인데요. 이를 위해서 if문을 사용할 거예요.
if문에 대해서 공부해 볼까요?

[문법] if문




위치에 따라 다른 마커들로 보여주기

아래에서처럼, for 루프 안에 if 문을 사용하여 (줄11~줄19), 각 로봇 위치의 조건에 따라 다른 마커를 설정해 보지요.

주목할 점 하나. 로봇 각 위치들을 조건처리 하기 위해 if 문이 for 루프 안에 들어간다고 했죠? 그러면, if 문 전체는 for 루프에 종속되는 것이고, 고로 if 문 전체는 for 루프의 첫 줄 (줄10)보다 들여쓰기를 해야 된답니다.
이런 들여쓰기 원칙은 Python의 기본이 되니, 잊지 마세요.

줄11은 로봇의 위치 좌표들 중 첫 번째, 즉, 시작점에 대해 마커를 설정하는 코드입니다. 그래서 i==0 이라는 조건이 사용되었지요. 왜냐하면, 첫 번째 좌표는 좌표 리스트 (줄3, 줄4)에서 인덱스 번호가 0이니까요.
줄12와 줄13에서는 각각 마커의 모양을 별모양으로, 마커의 색깔을 빨강색으로 설정하는 것이랍니다. 이 두줄은 if 문의 처리 코드이고, 고로 if 문에 종속되는 코드들이죠? 그래서 줄11보다 들여쓰기를 했답니다.

줄14는 로봇의 위치 좌표들 중 마지막, 즉, 도착점에 대해 마커를 설정하는 코드입니다. 그래서 i==7 이라는 조건이 사용되었지요. 왜냐하면, 마지막 좌표는 좌표 리스트 (줄3, 줄4)에서 인덱스 번호가 7이니까요. 한 가지 주목할 점은, 두 번째 조건부분이기 때문에 "elif"를 사용했다는 것이예요.
줄15와 줄16에서는 각각 마커의 모양을 다이아몬드모양으로, 마커의 색깔을 분홍색으로 설정하는 것이랍니다. 이 두줄 역시 if 문에 종속되는 코드들이기 때문에 줄14보다 들여쓰기를 했답니다.

줄17는 로봇의 나머지 위치 좌표들에 대해 마커를 설정하는 코드입니다. 그래서 "else"를 사용했지요.
줄18과 줄19에서는 각각 마커의 모양을 사각형으로, 마커의 색깔을 파랑색으로 설정하는 것이랍니다. 이 두줄 역시 if 문에 종속되는 코드들이기 때문에 줄17보다 들여쓰기를 했구요.

줄20에서는 마커의 크기를 설정하고 있는데요, 시작점에서 도착점까지 갈수록 크기가 커지도록 했답니다. 즉, 시작점은 크기가 5, 그 다음 위치는 7, 그 다음 위치는 9, 등등 점점 마커의 크기가 커지는 것이지요.

줄21은 각 로봇의 위치들을 위에서 설정한 색 (my_color), 마커 모양 (my_marker), 마커 크기 (my_markersize)를 이용하여 그래프에 그려 넣는 코드이지요.

각 위치 좌표에 따라 다른 마커를 이용하여 그려 넣은 다음에는, 줄23에서 다 그려진 그래프를 보여주고 있지요.

위 코드를 실행해 볼까요? 어떻게 실행하는지 기억하지요?
저장한 후, 아래처럼 터미널에서 python3 를 이용하면 되지요? 기억이 안난다면, 여기에서 한 번 더 복습해 보세요.

실행하면, 아래와 같이 시작점은 작고 빨간 별모양의 마커가, 도착점은 분홍색의 큰 다이아몬드 모양의 마커가 그려져 있는 그래프를 볼 수 있답니다.

강의에서 작성된 소스 코드 (source code)를 다운받으려면, 다음 링크를 클릭하세요: 소스 코드 다운로드
혹시, 이해가 잘 안되는 부분에 대한 질문이 있거나 다루어 줬으면 하는 주제가 있으면, 화면 오르쪽 하단에 "질문하기" 버튼을 이용해 주세요.






발자취

2019-09-11 "키클 코딩랩 - 미국 공학박사 아빠의 코딩 연구소"로 이름 변경
2019-06-28 코딩 교실 공개
2019-03-18 코딩 교실 제작 시작

바로가기
About
Contact
Privacy Policy
강의목록
질문하기
처음으로