D. 거북이로 막대 그래프 그리기
🎯 학습 목표
이 강의를 마치면 다음을 할 수 있어요:
- ○ 거북이로 막대(사각형)를 그릴 수 있다
- ○ 함수로 막대 그리기를 재사용할 수 있다
- ○ 여러 개의 막대를 나란히 그릴 수 있다
핵심 개념
막대 그래프란?
막대 그래프는 데이터를 막대의 높이로 표현합니다.
📊 비유: 블록 쌓기
레고 블록을 쌓는 것처럼, 숫자가 크면 블록을 더 많이 쌓아요!
- 숫자 3 → 블록 3개
- 숫자 5 → 블록 5개
- 어느 쪽이 높은지 바로 알 수 있죠!
막대 하나 그리기
막대는 사각형입니다. 거북이로 사각형을 그려봅시다!
# 막대 하나 그리기 (높이 100)
t.forward(100) # 위로
t.right(90)
t.forward(30) # 오른쪽으로 (막대 너비)
t.right(90)
t.forward(100) # 아래로
t.right(90)
t.forward(30) # 왼쪽으로
막대 높이 = 데이터 값
| 과목 | 점수 | 막대 높이 |
|---|---|---|
| 국어 | 80 | 80픽셀 |
| 수학 | 95 | 95픽셀 |
| 영어 | 70 | 70픽셀 |
함수로 막대 그리기
같은 코드를 여러 번 쓰지 말고, 함수로 만들어서 재사용합시다!
def draw_bar(t, height, width=40):
"""막대 하나를 그리는 함수"""
for _ in range(2):
t.forward(height)
t.right(90)
t.forward(width)
t.right(90)
💡 함수의 장점
- 재사용: 한 번 만들면 여러 번 사용 가능
- 깔끔함: 코드가 짧고 읽기 쉬움
- 수정 용이: 함수만 고치면 전체가 바뀜
비쥬얼 코딩 해보기
거북이로 막대 하나를 그려봅시다!
미션
거북이 시작 블록을 추가하세요
앞으로/오른쪽 블록으로 사각형을 그려보세요
# 블록을 추가하면 Python 코드가 여기에 표시됩니다...
블록을 추가하면 흐름도가 여기에 표시됩니다...
예제 코드
함수로 막대 하나 그리기
import turtle
def draw_bar(t, height, width=40):
"""막대 하나를 그리는 함수"""
for _ in range(2):
t.forward(height)
t.right(90)
t.forward(width)
t.right(90)
t = turtle.Turtle()
t.shape("turtle")
t.speed(3)
# 시작 위치로 이동
t.penup()
t.goto(-100, -100)
t.pendown()
t.left(90) # 위를 바라봄
# 함수 호출로 막대 그리기!
draw_bar(t, 80)
실행 결과
높이가 80인 막대 하나가 그려집니다! 함수 덕분에 코드가 깔끔해졌어요.
함수로 막대 3개 그리기 (성적표)
import turtle
def draw_bar(t, height, width=40):
"""막대 하나를 그리는 함수"""
for _ in range(2):
t.forward(height)
t.right(90)
t.forward(width)
t.right(90)
def move_to_next(t, width, gap=20):
"""다음 막대 위치로 이동하는 함수"""
t.penup()
t.right(90)
t.forward(width + gap)
t.left(90)
t.pendown()
t = turtle.Turtle()
t.shape("turtle")
t.speed(5)
# 데이터: 국어, 수학, 영어 점수
scores = [80, 95, 70]
width = 40
t.penup()
t.goto(-100, -100)
t.pendown()
t.left(90) # 위를 바라봄
# 함수를 사용해서 깔끔하게!
for score in scores:
draw_bar(t, score, width)
move_to_next(t, width)
실행 결과
세 과목의 점수가 막대 그래프로 표시됩니다! 함수 덕분에 반복문 안이 단 2줄로 깔끔해졌어요.
🎯 퀴즈
퀴즈: 막대 그래프
막대 그래프에서 데이터 값이 클수록 막대는 어떻게 되나요?
정답 보기
정답: A) 더 높아진다
막대 그래프는 데이터 값을 막대의 높이로 표현합니다. 값이 크면 막대가 높아지고, 값이 작으면 막대가 낮아집니다!
막대 그래프 함수 연습:
함수 정의: def (t, height, width):
함수 호출: draw_bar(t, , 40)
함수의 장점: 코드 가능
🎯 빈칸 채우기 미션
빈칸을 채워서 코드를 완성하세요!
정답 확인
⚠️ 실수해보기 (Let's Break It!)
다음 코드에서 막대가 이상하게 그려져요. 무엇이 문제일까요?
import turtle
def draw_bar(t, height, width=40):
for _ in range(2):
t.forward(height)
t.right(90)
t.forward(width)
t.right(90)
t = turtle.Turtle()
# 막대 그리기
draw_bar(t, 80) # 막대가 옆으로 누워있어요!
힌트 보기
거북이는 처음에 어느 방향을 바라보고 있나요?
정답 보기
거북이가 오른쪽을 보고 있어서 막대가 옆으로 그려집니다!
import turtle
def draw_bar(t, height, width=40):
for _ in range(2):
t.forward(height)
t.right(90)
t.forward(width)
t.right(90)
t = turtle.Turtle()
t.left(90) # ← 먼저 위를 바라보게!
draw_bar(t, 80) # 이제 막대가 위로 그려져요!
거북이는 처음에 오른쪽을 바라봅니다.
t.left(90)으로 위를 바라보게 한 후 막대를 그려야 해요!
🔧 디버그 클리닉
문제: 막대가 옆으로 누워있어요!
직접 코딩해보기
함수로 막대 2개 그리기
draw_bar() 함수를 만들고, 두 과목의 점수를 막대 그래프로 그려보세요!
예시 답안
import turtle
def draw_bar(t, height, width=40):
"""막대 하나를 그리는 함수"""
for _ in range(2):
t.forward(height)
t.right(90)
t.forward(width)
t.right(90)
t = turtle.Turtle()
t.shape('turtle')
t.speed(3)
scores = [70, 90]
width = 40
t.penup()
t.goto(-80, -100)
t.pendown()
t.left(90)
for score in scores:
draw_bar(t, score, width)
t.penup()
t.right(90)
t.forward(width + 20)
t.left(90)
t.pendown()
결과: 함수를 사용해서 깔끔하게 두 개의 막대가 그려집니다!
🧩 핵심 요약
이번 강의에서 배운 내용:
| 개념 | 설명 |
|---|---|
| 막대 그래프 | 데이터를 막대 높이로 표현 |
| draw_bar() 함수 | 막대 그리기를 재사용 가능하게 |
| 함수의 장점 | 코드 재사용, 깔끔함, 수정 용이 |
| 여러 막대 | 반복문 + 함수로 효율적으로 |
복습 체크리스트
- [ ]
draw_bar()함수를 만들 수 있나요? - [ ] 함수를 호출해서 막대를 그릴 수 있나요?
- [ ] 반복문과 함수를 함께 사용할 수 있나요?