터틀 그래픽에서 방향 함수는 처음 배우는 사람에게 가장 헷갈리는 구간입니다. right()와 left()는 상대 회전이고, setheading()은 절대 방향이라는 설명을 들어도 실제 코드에서 자꾸 섞여 쓰게 됩니다. 그래서 도형이 원하는 위치로 안 가고, 각도 계산이 꼬이는 일이 자주 생깁니다.
이번 리라이팅은 right(), left(), setheading() 차이를 “실패 사례 중심”으로 정리했습니다. 어느 함수가 언제 맞는지, 섞어 쓸 때 생기는 오류를 어떻게 줄일지, 수업/과제에서 바로 써먹는 기준으로 설명합니다.
![[파이썬] 터틀 방향 헷갈릴 때 끝내기: right(), left(), setheading() 차이 2 터틀 방향 함수 본문 이미지 1](https://www.shindeacon.co.kr/wp-content/uploads/2026/04/body1-3.png)
Table of Contents
터틀 방향 함수는 상대 회전과 절대 방향을 분리해서 쓰면 헷갈림이 줄어듭니다
right(), left()는 현재 방향 기준 회전
right(90)은 “항상 동쪽”이 아니라 “지금 바라보는 방향에서 오른쪽 90도”입니다. 즉 상태가 누적됩니다. 반복문 안에서 사용하면 회전량이 계속 쌓이기 때문에 예측 가능한 패턴을 만들 때 유리합니다.
for _ in range(4):
t.forward(100)
t.right(90)
정사각형처럼 반복 회전이 필요한 도형은 right/left가 가장 자연스럽습니다.
누적 회전 디버깅 팁
중간에 print(t.heading())을 찍으면 현재 누적 각도를 바로 확인할 수 있습니다.
setheading()은 절대 방향으로 리셋
setheading(0)은 항상 동쪽, 90은 북쪽처럼 “기준축으로 바로 맞추는” 함수입니다. 이전 회전 이력을 무시하고 방향을 재설정하므로, 함수형 코드나 긴 알고리즘에서 방향 표류를 막을 때 유용합니다.
t.setheading(90)
t.forward(120)
t.setheading(0)
t.forward(80)
여러 블록으로 나눠 그릴 때 각 블록 시작 방향을 고정해두면 오류가 크게 줄어듭니다.
섞어 쓸 때는 기준점을 명확히
실전에서 자주 쓰는 패턴은 “setheading으로 기준 복귀 후 right/left로 패턴 실행”입니다. 이렇게 하면 누적 회전의 장점은 살리면서도 시작 방향이 꼬이지 않습니다.
t.setheading(0) # 기준 복귀
for _ in range(5):
t.forward(140)
t.right(144) # 패턴 회전
모듈화할 때 필수 규칙
함수 시작 시 방향을 setheading으로 고정하고, 종료 시에도 기준 방향으로 돌려놓으면 다른 함수와 충돌이 적습니다.
![[파이썬] 터틀 방향 헷갈릴 때 끝내기: right(), left(), setheading() 차이 3 터틀 방향 함수 본문 이미지 2](https://www.shindeacon.co.kr/wp-content/uploads/2026/04/body2-3-scaled.jpg)
자주 헷갈리는 질문 3가지
right(360) 하면 원위치인가요?
방향은 원래대로 돌아오지만 좌표가 바뀌는 건 아닙니다. 회전은 위치를 이동시키지 않습니다.
setheading만 쓰면 left/right는 필요 없나요?
반복 패턴 도형에서는 상대 회전이 훨씬 간단합니다. setheading은 기준 복구용으로 쓰는 편이 좋습니다.
left와 right를 섞으면 왜 꼬이나요?
둘 다 상대 회전이라 누적 이력이 계속 쌓입니다. 중간중간 setheading으로 기준을 재설정하면 안정됩니다.
실전 적용 체크리스트
1) 패턴 도형인가?
그렇다면 right/left 중심으로 작성
2) 긴 코드/함수 분할인가?
그렇다면 setheading으로 시작점 고정
3) 결과가 꼬이면?
heading 로그로 누적 각도 확인 후 기준 복귀 추가
정리
right(), left(), setheading() 차이는 상대/절대 개념만 분리해도 대부분 해결됩니다. 회전 패턴은 상대 회전, 기준 복귀는 절대 방향으로 나눠 쓰면 코드가 훨씬 안정적입니다.
실습 전에 2분 점검하면 실패를 줄일 수 있습니다
실습이 길어질수록 작은 기준 하나가 전체 결과를 좌우합니다. 그래서 코드를 돌리기 전에 현재 상태를 짧게 확인하는 루틴을 추천합니다. 방향 예제라면 현재 heading 값을 먼저 찍고, 별 그리기라면 반복 횟수와 각도를 체크한 뒤 시작하는 식입니다. 이 습관만 잡혀도 “왜 결과가 다르지?”를 반복하는 시간이 확 줄어듭니다.
빠른 점검 루틴
1) 시작 방향 고정 여부 확인, 2) 반복 횟수 확인, 3) 각도 오타 확인, 4) 마지막 done() 확인. 네 가지를 순서대로 보면 대부분의 오류를 초반에 걸러낼 수 있습니다. 특히 과제 제출 직전에는 이 루틴이 큰 도움이 됩니다.
![[파이썬] 터틀 방향 헷갈릴 때 끝내기: right(), left(), setheading() 차이 4 추가 점검 이미지](https://www.shindeacon.co.kr/wp-content/uploads/2026/04/body2-3-scaled.jpg)