728x90
재귀함수란 함수를 만든 뒤 그 함수 안에서 자신을 호출하는 함수입니다. 재귀함수를 사용할 때 끝나는 문구가 없다면 무한반복이니 꼭 끝나는 문구를 넣어주세요.
재귀함수(recursion)
재귀함수를 사용해서 나무 그림 그리기
import turtle as t
t.Turtle()
t.bgcolor("black")
t.color("white")
t.speed(50)
t.left(90)
def tree(length):
if length>1:
t.forward(length)
t.right(45)
tree(length/2) ### 재귀함수
t.left(90)
tree(length/2) ### 재귀함수
t.left(135)
t.forward(length)
t.left(180)
tree(150)
turtle패키지를 사용해서 기본적인 배경색,펜색,속도를 설정해주고, 나무가 위로 그려질 수 있게 t.left(90)을 작성합니다. 그 밑에 이제 재귀함수를 만듭니다. 저는 tree라고 만들었습니다.
- tree에 인자로 길이를 받습니다.
- if문을 사용해서 길이가 1보다 클때만 실행되게끔 설정합니다.
- 150직진한 뒤 오른쪽으로 45도 꺾습니다.
- 길이의 반만큼 직진합니다.(재귀함수라서 끝나면 시작한 곳에 있습니다.)
- 왼쪽으로 90도 회전합니다.
- 길이의 반만큼 직진합니다.(재귀함수라서 끝나면 시작한 곳에 있습니다.)
- 일직선으로 가기 위해서 135도를 꺾습니다.(오른쪽 45도 왼쪽 90도 왼쪽으로 135도 꺾으면 원상복귀)
- 150만큼 직진한 뒤 다시 위로 그려지게끔 180도 꺾습니다.
- *****재귀함수를 사용한 부분은 길이가 1보다 작아질 때까지 재귀함수를 반복합니다.*****
색상 추가
import turtle as t
t.Turtle()
t.bgcolor("black")
t.color("white")
t.speed(1000)
t.left(90)
def tree(length):
if length>1:
if length<2:
t.color("green") ### 색상넣기
else:
t.color("black") ### 색상넣기
t.forward(length)
t.right(30)
tree(length/1.5) ### 재귀함수
t.left(60)
tree(length/2) ### 재귀함수
t.left(150)
t.forward(length)
t.left(180)
t.color("black") ### 색상넣기
tree(50)
나무 그림의 코드에 색상을 추가해서 끝부분만 초록색이 나오게 코드를 수정했습니다.
- if문을 추가해서 길이가 2보다 작으면 초록색을 그렇지 않다면 검은색으로 그린다는 조건을 추가했습니다.
- 여기서 중요한 거는 맨 마지막에 t.color("black")을 추가해서 마지막에 색상을 검은색으로 바꿔주는 겁니다.
같은 모양 반복
1번은 삼각형입니다.
### 1번모양
import turtle as t
t.Turtle()
t.bgcolor("black")
t.color("white")
t.speed(1)
def dr_test3(length):
if length>10:
dr_test3 (length/2)
t.forward(length/2)
dr_test3(length/2)
t.left(120)
t.forward(length/2)
t.right(120)
dr_test3(length/2)
t.right(120)
t.forward(length/2)
t.left(120)
else:
for a in range(3):
t.forward(length)
t.left(120)
dr_test3(100)
2번은 사각형입니다. 길이를 조금 다르게 해서 만들었습니다.
### 2번모양
import turtle as t
t.Turtle()
t.bgcolor("black")
t.color("white")
t.speed(1000)
def dr_test3(length):
if length>10:
dr_test3(length/2)
t.forward(length/3)
dr_test3(length/2)
t.left(90)
t.forward(length/3)
dr_test3(length/2)
t.left(90)
t.forward(length/3)
dr_test3(length/2)
t.left(90)
t.forward(length/3)
t.left(90)
else:
for a in range(4):
t.forward(length)
t.left(90)
dr_test3(100)
728x90
'파이썬' 카테고리의 다른 글
파이썬 pyautogui 패키지로 자동 설문지 응답 프로그램 코드 작성 (0) | 2022.07.25 |
---|---|
파이썬 pyautogui 패키지 사용법 (0) | 2022.07.23 |
파이썬 turtle 패키지로 그림그리기 코드 작성 (색상,반복) (0) | 2022.07.21 |
파이썬 turtle 패키지로 그림그리기 코드 작성 (졸라맨) (0) | 2022.07.20 |
파이썬 기본패키지 turtle 모듈 사용법 (0) | 2022.07.19 |
댓글