본문 바로가기
프로그램/Python 1000제

Python 259제] 두근두근 파이썬(개정판) CHAPTER 7 도전문제 p227

by 건티 2024. 2. 10.
728x90

출처 : 반크_독도2023

 

나무를 그리는 프렉탈(fractal) 프로그램 작성하기.

참고 풀이]

import turtle
import random

def tree(length,size,do):
    if length>5:                  #length가 5보다 크면 순환호출을 한다.
        t.forward(length)     #포인터가 length만큼 선을 그린다.
        t.right(do)                #오른쪽으로 do도 회전한다.
        #lenght에 size만큼 뺀 값을 인수로 tree()를 순환호출한다.
        tree(length-size,size,do) 
        t.left(do*2)               #왼쪽으로 do*2도 회전한다.
        #lenght에 size만큼 뺀 값을 인수로 tree()를 순환호출한다.
        tree(length-size,size,do)
        t.right(do)                #오른쪽으로 do도 회전한다.
        t.backward(length)  #length만큼 뒤로 간다. 제자리로 돌아온다.

t=turtle.Turtle()
t.up()                                 #나무의 위치를 이동하기 위하여 포인터를 올린다.
t.goto(0,-200)                    #시작위치를 임의의 아래로 이동한다.
t.down()                             #나무를 그리기 위하여 포인터를 내린다.
t.left(90)                            #나무를 그리기 위하여 포인터를 위로 향하게 한다. 

t.color("green")                 #선의 색을 녹색으로 한다.
t.speed(0)                         #그리는 속도를 제일 빠르게 한다.
n=random.randint(10,30) #구분될 선길이를 구한다.
k=random.randint(10,50) #가지의 각도를 구한다.

#최초 선길이 90, 구분될 선길이와 가지의 각도를 인수로 tree()를 호출한다.
tree(90,n,k) 

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 봄

 

 

반응형

댓글