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 코드가 여기에 표시됩니다...
블록을 추가하면 흐름도가 여기에 표시됩니다...
예제 코드
함수로 파이 조각 그리기
파이 조각을 그리는 코드를 함수로 만들어 재사용합시다!
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%의 각도: 도
- 전체 원: 도
🎯 빈칸 채우기 미션
빈칸을 채워서 코드를 완성하세요!
정답 확인
결과: 60% = 216도, 40% = 144도⚠️ 실수해보기 (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%가 되어야 해요! 그렇지 않으면 원이 완전히 채워지지 않거나 넘치게 됩니다.
🔧 디버그 클리닉
문제: 조각들이 겹쳐요!
✅ 올바른 코드
직접 코딩해보기
함수로 2조각 원 그래프 만들기
draw_pie_slice() 함수를 완성해서 2조각 원 그래프를 그려보세요!
🧩 핵심 요약
이번 강의에서 배운 내용:
| 개념 | 설명 |
|---|---|
| 원 그래프 | 비율을 원의 조각으로 표현 |
| 각도 계산 | 360 × (비율/100) |
| circle(r, angle) | 반지름 r, 각도 angle만큼 원호 그리기 |
| draw_pie_slice() 함수 | 파이 조각 그리기를 재사용 가능하게 |
| 리스트 활용 | data[i], colors[i]로 데이터 순서대로 적용 |
복습 체크리스트
- [ ] 비율을 각도로 변환할 수 있나요?
- [ ]
draw_pie_slice()함수를 만들 수 있나요? - [ ] 반복문과 함수를 함께 사용해서 여러 조각을 그릴 수 있나요?