콘텐츠로 이동

F. 거북이로 원 그래프 그리기


🎯 학습 목표

이 강의를 마치면 다음을 할 수 있어요:

  • ○ 원 그래프가 무엇인지 이해한다
  • ○ 비율을 각도로 변환할 수 있다
  • ○ 거북이로 파이 조각을 그릴 수 있다

핵심 개념

원 그래프(Pie Chart)란?

원 그래프는 전체에서 각 부분이 차지하는 비율을 보여줍니다.

🍕 비유: 피자 나누기

피자 한 판을 친구들과 나눠 먹는다고 상상해보세요!

  • 내가 반(50%)을 먹으면 → 반원 크기
  • 친구가 1/4(25%)를 먹으면 → 1/4 크기
  • 전체 피자 = 100% = 360도

비율 → 각도 변환

비율 계산 각도
50% 360 × 0.5 180°
25% 360 × 0.25 90°
10% 360 × 0.1 36°

공식: 각도 = 360 × (비율 / 100)


거북이로 부채꼴 그리기

단계 동작
1 중심에서 시작
2 반지름만큼 전진
3 원호 그리기
4 중심으로 돌아오기

비쥬얼 코딩 해보기

원을 그리는 것부터 시작해봅시다!

🎯 미션
거북이로 원을 그려보세요
# 블록을 추가하면 Python 코드가 여기에 표시됩니다...
블록을 추가하면 흐름도가 여기에 표시됩니다...
100 90 90 50 4


예제 코드

함수로 파이 조각 그리기

파이 조각을 그리는 코드를 함수로 만들어 재사용합시다!

import turtle

def draw_pie_slice(t, radius, angle, color):
    """파이 조각 하나를 그리는 함수"""
    t.fillcolor(color)
    t.begin_fill()

    t.forward(radius)          # 반지름만큼 전진
    t.left(90)                 # 왼쪽 90도
    t.circle(radius, angle)    # 원호 그리기
    t.left(90)                 # 왼쪽 90도
    t.forward(radius)          # 중심으로 돌아오기
    t.left(180 - angle)        # 다음 조각 시작 위치

    t.end_fill()

t = turtle.Turtle()
t.shape("turtle")
t.speed(3)

# 함수 호출로 반원(50%) 그리기!
draw_pie_slice(t, 80, 180, "red")

실행 결과

빨간색 반원(50%)이 그려집니다! 🔴

💡 함수의 장점

  • 재사용: 한 번 만들면 여러 번 사용 가능
  • 깔끔함: 복잡한 코드를 한 줄로 호출
  • 매개변수: radius, angle, color를 자유롭게 바꿀 수 있음

함수로 2조각 원 그래프

import turtle

def draw_pie_slice(t, radius, angle, color):
    """파이 조각 하나를 그리는 함수"""
    t.fillcolor(color)
    t.begin_fill()

    t.forward(radius)
    t.left(90)
    t.circle(radius, angle)
    t.left(90)
    t.forward(radius)
    t.left(180 - angle)

    t.end_fill()

t = turtle.Turtle()
t.shape("turtle")
t.speed(5)

radius = 80

# 데이터: 좋아요 70%, 싫어요 30%
data = [70, 30]
colors = ["green", "red"]

# 함수를 사용해서 깔끔하게!
for i in range(2):
    angle = 360 * data[i] / 100  # 비율 → 각도
    draw_pie_slice(t, radius, angle, colors[i])

실행 결과

초록색(70%)과 빨간색(30%)으로 나뉜 원 그래프! 반복문 안이 단 2줄로 매우 깔끔해요.


🎯 퀴즈

퀴즈: 원 그래프
25%를 원 그래프로 표현하면 몇 도일까요?
정답 보기

정답: B) 90도

계산: 360 × 0.25 = 90도

25%는 전체의 1/4이므로, 원의 1/4인 90도입니다!

원 그래프 각도 계산:

  • 50%의 각도:
  • 10%의 각도:
  • 전체 원:

🎯 빈칸 채우기 미션

빈칸을 채워서 코드를 완성하세요!

정답 확인

for percent in data:
    angle = 360 * percent / 100
    print(f'{percent}% = {angle}도')
결과: 60% = 216도, 40% = 144도

정답 확인

t.circle(radius, angle)
- circle(반지름, 각도)로 원호를 그립니다


⚠️ 실수해보기 (Let's Break It!)

다음 코드의 원 그래프가 이상해요. 무엇이 문제일까요?

import turtle

t = turtle.Turtle()

# 데이터: 좋아요, 보통, 싫어요
data = [50, 30, 10]  # 합이 90%?!
colors = ["green", "yellow", "red"]

for i in range(3):
    angle = 360 * data[i] / 100
    # 파이 조각 그리기...
힌트 보기

원 그래프에서 모든 비율의 합은 얼마가 되어야 할까요?

정답 보기

모든 비율의 합이 100%가 아닙니다!

50 + 30 + 10 = 90% (10% 부족!)

# 올바른 데이터 (합이 100%)
data = [50, 30, 20]  # 50 + 30 + 20 = 100%

# 또는
data = [50, 30, 10, 10]  # 기타 10% 추가

원 그래프에서 모든 조각의 비율 합은 반드시 100%가 되어야 해요! 그렇지 않으면 원이 완전히 채워지지 않거나 넘치게 됩니다.


🔧 디버그 클리닉

문제: 조각들이 겹쳐요!

❌ 잘못된 코드

t.forward(radius)
t.circle(radius, angle)
# 다음 조각 시작 위치 설정 안 함!

✅ 올바른 코드

t.forward(radius)
t.left(90)
t.circle(radius, angle)
t.left(90)
t.forward(radius)
t.left(180 - angle)  # 다음 조각 시작 위치!

직접 코딩해보기

함수로 2조각 원 그래프 만들기

draw_pie_slice() 함수를 완성해서 2조각 원 그래프를 그려보세요!


🧩 핵심 요약

이번 강의에서 배운 내용:

개념 설명
원 그래프 비율을 원의 조각으로 표현
각도 계산 360 × (비율/100)
circle(r, angle) 반지름 r, 각도 angle만큼 원호 그리기
draw_pie_slice() 함수 파이 조각 그리기를 재사용 가능하게
리스트 활용 data[i], colors[i]로 데이터 순서대로 적용

복습 체크리스트

  • [ ] 비율을 각도로 변환할 수 있나요?
  • [ ] draw_pie_slice() 함수를 만들 수 있나요?
  • [ ] 반복문과 함수를 함께 사용해서 여러 조각을 그릴 수 있나요?