목차
1. 사각형으로 그리는 꽃
1) turtle 모듈 사용하기
2) 사각형 그리기
3) 사각형으로 꽃 그리기
2. 오각형으로 그리는 꽃
1) 오각형 그리기
2) 오각형으로 꽃 그리기
3) 반복 횟수와 크기 변화
3. 펜 색 바꾸기
1) 도형을 그리는 펜의 색 설정
2) 펜 색이 순차적으로 바뀌게 하기
1. 사각형으로 그리는 꽃
1) turtle 모듈 사용하기
turtle 모듈은 그림 그리기를 통해 아이들이 프로그래밍하는 방법을 배울 수 있도록 1967년 Wally Feurzeig, Seymour Papert 및 Cynthia Solomon이 개발한 것이라고 한다. 간단한 명령어를 조합하여 도형을 그리고, 만들어진 도형을 일정한 각도 만큼씩 회전한 위치에 반복해 꽃 모양이 되게 하려는 것이다.
turtle 모듈은 import 명령으로 불러와 사용할 수 있는데, 프로그래밍 중간에 반복해서 많이 사용해야 하므로 'turtle'이라고 전부 쓰지 않고 't'로 간단히 줄여 쓰기 위해서 import as t. 명령어를 사용한다.
import turtle as t |
2) 사각형 그리기
사각형은 종이에 사각형을 그리는 것처럼 90˚로 이어진 선을 차례대로 4번 그리면 된다.
- 직선을 그리는 명령어 't.forward(거리)' 형식의 명령어를 사용한다.
- 오른쪽으로 100만큼 선을 그리자.
t.forward(100) |
- 처음 그린 선과 직각으로 방향을 돌려 선을 그리기 위해 펜의 방향을 변경해야 한다.
- 오른쪽으로 회전하는 것은 t.right(각도), 왼쪽으로 회전하려면 t.left(각도) 형식의 명령어를 사용한다.
- 오른쪽으로 90˚ 회전하자.
t.right(90) |
- 다시 직선을 그리고, 90˚ 회전하는 작업을 3번 더 하면 사각형이 완성된다.
- 같은 코드를 4번 작성하지 않고, for 변수 in range(시작값, 끝값): 구문을 이용해 반복시킨다.
for i in range(0, 4):
t.forward(100)
t.right(90)
|
3) 사각형으로 꽃 그리기
사각형을 조금씩 회전한 위치에 반복하여 그려서 꽃 모양이 되게 한다. 출발 방향을 조금씩 회전시키면 되므로 t.right(각도) 명령어를 다시 사용하고, 10˚씩 변화시킨다. 한 바퀴(360˚) 회전하기 위해서는 10˚씩 36회 반복시키면 된다.
for i in range(0, 36): t.right(10) for i in range(0, 4): t.forward(100) t.right(90) |
직선 4개를 반복해 사각형을 그리는 부분을 10˚씩 36번 회전하게 하는 반복문 속에 넣었다.
《결과》
2. 오각형으로 그리는 꽃
사각형으로 그리는 꽃과 같은 방법을 사용하되 오각형을 사용하면 좀 더 아름다운 꽃 모양이 만들어질 것 같다.
1) 오각형 그리기
- 오각형은 다섯개의 직선이 72˚( = 360˚ ÷ 5 )의 각을 이루며 이어져 있다.
- 사각형을 그리는 코드에서 반복횟수(=5)와 각도(=72)만 바꾸면 된다.
- 직선을 그리고, 72˚ 회전하는 것을 다섯 번 반복하면 된다.
for i in range(0, 5):
t.forward(100)
t.right(72)
|
2) 오각형으로 꽃 그리기
이번에는 오각형을 20˚씩 18번( = 360˚ ÷ 20 ) 반복시켜 보자.
for i in range(0, 18): t.right(20) for i in range(0, 5): t.forward(100) t.right(72) |
《결과》
가운데 나타난 꽃잎 모양이 아름답다. 오각형 개수를 다르게 하면 다른 모양이 나와 재미있다.
3) 반복 횟수와 크기 변화
도형 반복 횟수에 따라 다른 느낌의 꽃이 만들어지는 것이 재미있다. 도형 반복 횟수는 도형 간 각도 차이에 의해 정해진다.
- 간격을 40˚로 지정하면 한 바퀴 회전하며 그리기 위해서는 9번(360˚ ÷ 40 = 9) 반복해야 한다.
- 따라서 임의의 간격을 변수 gap이라 하면 반복횟수는 360/gap이 된다.
- 이때, 반복 횟수는 반드시 정수가 나와야 하므로 int() 함수를 사용하여 나눈 값을 정수로 바꾼다.
for i in range(0, int(360/gap)): t.right(gap) |
꼭짓점 수를 주고 지정한 꼭짓점 수를 가진 다각형을 그리게 하자.
- 다각형에서 두 변 사이의 각은 (360˚ ÷ 꼭짓점 수)로 구할 수 있다.
- 꼭짓점 수를 변수 apex에 저장하면, 두 변 사이의 각은 360/apex가 된다.
- 한 변의 길이를 length라는 변수에 저장하여 꽃의 크기도 자유롭게 지정할 수 있게 한다.
for i in range(0, apex): t.forward(length) t.right(360/apex) |
변수 gap, apex,length를 지정하는 부분을 제일 앞쪽에 두어, 다양한 숫자를 넣을 때 나타나는 모양 변화를 쉽게 비교할 수 있게 한다.
gap = 40 # 도형 사이의 간격 apex = 12 # 꼭짓점의 수(3~) length = 50 # 한 변의 길이 |
《결과》
3. 펜 색 바꾸기
1) 도형을 그리는 펜의 색 설절
- turtle에서 그림을 그리는 펜의 색상은 t.pencolor("색상")로 지시한다.
- 색상은 '문자열(Red, Green, Blue, ...)'이나 숫자로 입력.
- 예를 들어, 빨간색 펜으로 그리려면 t.pencolor("red")라는 명령어를 입력한다.
《결과》
2) 펜 색이 순차적으로 바뀌게 하기
한 가지 색으로 반복해서 도형을 그리게 하는 것보다 도형을 그릴 때마다 색깔이 달라지게 하면 더 재미있겠다.
- 순차적으로 그릴 색깔을 리스트 이름 = [ 쉼표로 구분된 리스트 요소 ] 형식을 써 리스트로 만든다.
- 리스트 속에 있는 원소들은 리스트 이름[index] 함수로 하나씩 차례대로 꺼내어 쓸 수 있다.
- 리스트의 index는 '0'부터 시작하므로, color_list 속의 첫 번째 원소는 color_list [0]이다.
color_list = [ 'red','fuchsia', 'violet', 'orange', 'silver', 'aqua','teal', 'blue', 'olive', 'green', 'lime', 'maroon', 'purple', 'navy'] for i in range(0, int(360/gap)): t.right(gap) t.pencolor(color_list[i]) |
《결과》
- 그런데, 도형 사이의 간격이 좁으면 그려야 하는 도형의 개수가 늘어난다.
- 도형의 개수(= int(360/gap))가 리스트 속의 색깔 수보다 많게 되면 color_list[i]에 문제가 생긴다.
- 도형의 개수와 상관없이 리스트의 index를 차례로 배정해야 한다.
- 나머지를 구하는 연산자 '%'를 사용해 리스트의 원소 수로 나눈 나머지를 index에 배정하면 된다.
- 리스트의 원소 수는 len(리스트 이름) 함수를 이용하여 구한다.
t.pencolor(color_list[i % len(color_list)]) |
《결과》
'Manuals > 파이썬' 카테고리의 다른 글
파이썬 turtle, 함수 사용 꽃 그리기 (1) | 2023.03.22 |
---|---|
파이썬 tkinter, 냉동식품 관리(1) (0) | 2023.03.11 |
파이썬 pandas, 텍스트 파일 사용 (0) | 2023.03.04 |
파이썬 pandas, 암기 프로그램(무작위 출제/채점) (0) | 2023.02.12 |
파이썬, matplotlib을 이용한 선 그래프 그리기 (0) | 2023.02.04 |