STARLEAP / PYTHON TURTLE

Build 2026.09.17-001210-0400

On this page

8. Layered Flower Design: Small Flower, Big Flower

You have made flower designs with arcs and loops. Today you will draw one flower layer, then draw a larger flower layer around it.

A layered flower design is built around one center point. Each layer starts at the center, points in a chosen direction, and repeats one petal all the way around.

Start With A Turtle File

Save a new file named layered_flower_design.py.

Start with this template.

CODE
import turtle

screen = turtle.Screen()
screen.setup(600, 800, 0, 0)
t = turtle.Turtle()
t.speed(0)

# Your layered flower code goes here.

screen.mainloop()

Run the program. A blank turtle window is fine. Close the turtle window before you change the code again.

Step 1 - Return To The Center

Replace the middle comment with this helper function.

EDIT VIEW - Gray = already there; dark = add or change
t.speed(0)

def center_turtle():
    t.teleport(0, 0)
    t.setheading(0)

screen.mainloop()

Run the program. Nothing new should appear yet.

t.teleport(0, 0) returns to the center without drawing a travel line.

t.setheading(0) points the turtle to the right. A heading is the direction the turtle is facing.

Step 2 - Draw One Petal

Add a petal function.

EDIT VIEW - Gray = already there; dark = add or change
def center_turtle():
    ...

def draw_petal(radius, arc_angle):
    for i in range(2):
        t.circle(radius, arc_angle)
        t.left(180 - arc_angle)

screen.mainloop()

Call it from the center.

EDIT VIEW - Gray = already there; dark = add or change
def draw_petal(radius, arc_angle):
    ...

center_turtle()
draw_petal(55, 75)

screen.mainloop()

Run the program.

Step 3 - Repeat A Small Flower

Use a loop to repeat the petal around the center.

EDIT VIEW - Gray = already there; dark = add or change
center_turtle()

petals = 10
turn = 360 / petals

for i in range(petals):
    draw_petal(55, 75)
    t.left(turn)

screen.mainloop()

Run the program.

The turn makes all the petals share the same center.

Step 4 - Name One Flower Layer

Turn the layer code into a function.

EDIT VIEW - Gray = already there; dark = add or change
def draw_petal(radius, arc_angle):
    ...

def draw_flower_layer(petals, radius, arc_angle, ink):
    center_turtle()
    t.color(ink)
    turn = 360 / petals
    for i in range(petals):
        draw_petal(radius, arc_angle)
        t.left(turn)

draw_flower_layer(10, 55, 75, 'teal')

screen.mainloop()

Run the program.

This function has four arguments because one flower layer needs four choices: number of petals, petal size, arc angle, and color.

Step 5 - Add A Larger Flower Around It

Call the same layer function again with a larger radius.

EDIT VIEW - Gray = already there; dark = add or change
draw_flower_layer(10, 55, 75, 'teal')
draw_flower_layer(16, 110, 55, 'purple')

screen.mainloop()

Run the program.

The second call draws a larger flower around the smaller one because its radius is bigger.

Step 6 - Rotate One Layer

Add a start_heading argument so one layer can begin turned a little.

EDIT VIEW - Gray = already there; dark = add or change
def draw_petal(radius, arc_angle):
    ...

def draw_flower_layer(petals, radius, arc_angle, ink, start_heading):
    center_turtle()
    t.setheading(start_heading)
    t.color(ink)
    turn = 360 / petals
    for i in range(petals):
        draw_petal(radius, arc_angle)
        t.left(turn)

draw_flower_layer(10, 55, 75, 'teal', 0)
draw_flower_layer(16, 110, 55, 'purple', 10)

screen.mainloop()

Run the program.

The heading changes where a layer begins. A small heading change can help the larger flower sit between the smaller petals.

Final Project - Layered Flower Design

Use this full program as a layered flower starter.

CODE
import turtle

screen = turtle.Screen()
screen.setup(600, 800, 0, 0)
t = turtle.Turtle()
t.speed(0)
t.pensize(2)

def center_turtle():
    t.teleport(0, 0)
    t.setheading(0)

def draw_petal(radius, arc_angle):
    for i in range(2):
        t.circle(radius, arc_angle)
        t.left(180 - arc_angle)

def draw_flower_layer(petals, radius, arc_angle, ink, start_heading):
    center_turtle()
    t.setheading(start_heading)
    t.color(ink)
    turn = 360 / petals
    for i in range(petals):
        draw_petal(radius, arc_angle)
        t.left(turn)

draw_flower_layer(10, 45, 85, 'teal', 0)
draw_flower_layer(14, 80, 65, 'orange', 8)
draw_flower_layer(18, 120, 50, 'purple', 16)

screen.mainloop()

Run the program.

Make the layered flower yours by changing one argument at a time. Good experiments include petals, radius, arc_angle, ink, and start_heading.

Teacher Check

Show your layered flower design. Then point to:

Say this out loud: "A layered flower can be built by drawing a small flower, then drawing a larger flower around it."