This task is part of project06 which is due at 23:00 EDT on 2025-10-21.
You have the option to work with a partner on this task if you wish. Working with a partner requires more work to coordinate schedules, but if you work together and make sure that you are both understanding the code you write, you will make progress faster and learn more.
You can download the starter code for this task using this link.
You can submit this task using this link.
Put all of your work for this task into the file
circles.py
(you will create this file from scratch)
This project is very similar the scales task which uses
wavesynth to generate audio instead of turtle to make pictures. You
only have to do one of the two.
In this task you will define the following functions:
concentricCirclesmulticolorCirclescircleDesignYour circles.py file should begin with this header, which you should
paste into the file and fill out (as usual, each function you write must
be documented):
"""
Authors:
Consulted:
Date:
Purpose: CS 111 circles task: draws concentric circles in alternating
colors.
"""
You will need to import turtle and turtleBeads by putting the
following lines at the beginning of your code (import turtleBeads first
so that the beLoud print statements will work correctly):
from turtleBeads import *
from turtle import *
concentricCirclesIn this subtask, your goal is to generate pictures like those shown in
these examples for concentricCircles,
consisting of multiple concentric circles of alternating colors that form
a bullseye pattern.
Define the concentricCircles
function such that:
for loop or a while
loop to draw the
circles.turtleBeads drawDot
function
(reference for drawDot) to draw your
circles, rather than using the turtle circle function or the
turtleBeads drawCircle function, because we will grade based on
whether your calls to drawDot are
correct. drawDot works just
like drawCircle, except that it is much faster, the circle it draws
is always filled in, and it uses the pen color, not the fill color
(this also means you don't need to call begin_fill and end_fill).You can test your concentricCircles function by executing the example
code in the shell. We recommend using noTrace beforehand and
showPicture afterwards to speed things up. We have also supplied a
test_circles.py file which draws four circles and uses optimism to
check that the printed output is correct.
multicolorCirclesFor this part, you will create a multicolorCircles
function which uses a
(possibly nested) loop to draw concentric circles using an arbitrary
number of colors. These
multicolorCircles examples show how it
should work.
multicolorCircles must accept 3 parameters:
concentricCircles above). The
second-smallest circle will have twice this radius, the
third-smallest three times this radius, and so on.concentricCircles you were given the outermost radius
as an argument, in multicolorCircles you are given the innermost
radius. This value is also the difference between the radii of each
successive circle, so for example, if the value was 10 and there were
3 circles, their radii would be 10, 20, and 30.concentricCircles, you must use the turtleBeads
drawDot
function
to draw your circles, rather than using the turtle circle
function or the turtleBeads drawCircle function, because we will
grade based on whether your calls to drawDot are
correct.circleDesignFor this last part, get creative. Make a function named
circleDesign with zero parameters
which uses concentricCircles and/or
multicolorCircles
within some kind of loop, to
create a custom design. This example design
gives a taste of the kinds of things you could do.
The only requirements are that:
concentricCircles and/or multicolorCircles.You can have it draw whatever design you wish to create, we are not grading based on what gets drawn.
concentricCircles examples
These examples show what should be drawn when concentricCircles is called. Note that the turtle does not need to move from the starting position at all. Also note that the printed output rounds of the radii to make them easier to read, but the actual radii are not rounded; you should NOT use the 'round' function in your code.
In []:PrintsconcentricCircles(60, 3, 'HotPink', 'LightSkyBlue1')A HotPink dot at (0, 0) with radius 60 A LightSkyBlue1 dot at (0, 0) with radius 40 A HotPink dot at (0, 0) with radius 20ImageIn []:
PrintsconcentricCircles(190, 4, 'LightSalmon2', 'Khaki1')A LightSalmon2 dot at (0, 0) with radius 190 A Khaki1 dot at (0, 0) with radius 142 A LightSalmon2 dot at (0, 0) with radius 95 A Khaki1 dot at (0, 0) with radius 48ImageIn []:
PrintsconcentricCircles(140, 7, 'Gold', 'DeepSkyBlue')A Gold dot at (0, 0) with radius 140 A DeepSkyBlue dot at (0, 0) with radius 120 A Gold dot at (0, 0) with radius 100 A DeepSkyBlue dot at (0, 0) with radius 80 A Gold dot at (0, 0) with radius 60 A DeepSkyBlue dot at (0, 0) with radius 40 A Gold dot at (0, 0) with radius 20Image
multicolorCircles examples
These examples show what should be drawn when multicolorCircles is called. Note that the turtle does not need to move from the starting position at all. Also note that the printed output rounds of the radii to make them easier to read, but the actual radii are not rounded; you should NOT use the 'round' function in your code.
In []:PrintsmulticolorCircles(16, ['black', 'blue', 'red', 'yellow'], 1)A black dot at (0, 0) with radius 64 A blue dot at (0, 0) with radius 48 A red dot at (0, 0) with radius 32 A yellow dot at (0, 0) with radius 16ImageIn []:
PrintsmulticolorCircles( 12, ['red', 'orange', 'yellow', 'green', 'blue', 'navy', 'purple3'], 2 )A red dot at (0, 0) with radius 168 A orange dot at (0, 0) with radius 156 A yellow dot at (0, 0) with radius 144 A green dot at (0, 0) with radius 132 A blue dot at (0, 0) with radius 120 A navy dot at (0, 0) with radius 108 A purple3 dot at (0, 0) with radius 96 A red dot at (0, 0) with radius 84 A orange dot at (0, 0) with radius 72 A yellow dot at (0, 0) with radius 60 A green dot at (0, 0) with radius 48 A blue dot at (0, 0) with radius 36 A navy dot at (0, 0) with radius 24 A purple3 dot at (0, 0) with radius 12ImageIn []:
PrintsmulticolorCircles(4, ['Aquamarine2', 'Khaki2', 'LimeGreen'], 12)A Aquamarine2 dot at (0, 0) with radius 144 A Khaki2 dot at (0, 0) with radius 140 A LimeGreen dot at (0, 0) with radius 136 A Aquamarine2 dot at (0, 0) with radius 132 A Khaki2 dot at (0, 0) with radius 128 A LimeGreen dot at (0, 0) with radius 124 A Aquamarine2 dot at (0, 0) with radius 120 A Khaki2 dot at (0, 0) with radius 116 A LimeGreen dot at (0, 0) with radius 112 A Aquamarine2 dot at (0, 0) with radius 108 A Khaki2 dot at (0, 0) with radius 104 A LimeGreen dot at (0, 0) with radius 100 A Aquamarine2 dot at (0, 0) with radius 96 A Khaki2 dot at (0, 0) with radius 92 A LimeGreen dot at (0, 0) with radius 88 A Aquamarine2 dot at (0, 0) with radius 84 A Khaki2 dot at (0, 0) with radius 80 A LimeGreen dot at (0, 0) with radius 76 A Aquamarine2 dot at (0, 0) with radius 72 A Khaki2 dot at (0, 0) with radius 68 A LimeGreen dot at (0, 0) with radius 64 A Aquamarine2 dot at (0, 0) with radius 60 A Khaki2 dot at (0, 0) with radius 56 A LimeGreen dot at (0, 0) with radius 52 A Aquamarine2 dot at (0, 0) with radius 48 A Khaki2 dot at (0, 0) with radius 44 A LimeGreen dot at (0, 0) with radius 40 A Aquamarine2 dot at (0, 0) with radius 36 A Khaki2 dot at (0, 0) with radius 32 A LimeGreen dot at (0, 0) with radius 28 A Aquamarine2 dot at (0, 0) with radius 24 A Khaki2 dot at (0, 0) with radius 20 A LimeGreen dot at (0, 0) with radius 16 A Aquamarine2 dot at (0, 0) with radius 12 A Khaki2 dot at (0, 0) with radius 8 A LimeGreen dot at (0, 0) with radius 4Image
circleDesign example
This example shows one kind of design you could create out of concentric circles for the circleDesign function. Note that the function must not have any parameters, but beyond testing that it doesn't crash, we don't care exactly what it draws, so you DO NOT have to create this exact pattern.
In []:PrintscircleDesign()A pattern of overlapping bullseyes arranged to look like scales. Each bullseye has 6 rings, colored red, orange, and yellow, and then again red, orange, and yellow, from the outermost to innermost. This creates a bright, almost glowing color to the whole image. The bullseyes are arranged in alternating rows of 6 or 7, where each bullseye touches the edge of the next along a row. The rows of 6 are offset by the radius of one bullseye to the right and above the rows of 7, and the rows of 7 are offset from each other so that their bullseyes touch at the top and bottom edges. Since higher-up rows are drawn on top of lower-down rows, except at the edges of the pattern each circle has its upper-left and upper-right parts covered by circles above it, while its lower half is completely visible, similar to how scales of a fish or reptile overlap.Image
concentricCircles must make the correct number of calls to drawDot
concentricCircles function must call drawDot the correct number of times.concentricCircles must make the correct function calls
concentricCircles function must call the drawDot function in the correct order, with the correct arguments, while the correct position and pen_color values are set upmulticolorCircles must make the correct number of calls to drawDot
multicolorCircles function must call drawDot the correct number of times.multicolorCircles must make the correct function calls
multicolorCircles function must call the drawDot function in the correct order, with the correct arguments, while the correct position and pen_color values are set upcircleDesign must not crash
circleDesign function must run without crashing.concentricCircles with 4 parameters
def to define concentricCircles with 4 parametersconcentricCircles with 4 parameters, use any kind of loop in at least one place.color
concentricCircles with 4 parameters, call color, pencolor, or penColor in at least one place.drawDot
concentricCircles with 4 parameters, call drawDot in at least one place.multicolorCircles with 3 parameters
def to define multicolorCircles with 3 parametersmulticolorCircles with 3 parameters, use any kind of loop in at least one place.color
multicolorCircles with 3 parameters, call color, pencolor, or penColor in at least one place.drawDot
multicolorCircles with 3 parameters, call drawDot in at least one place.circleDesign with 0 parameters
def to define circleDesign with 0 parameterscircleDesign with 0 parameters, use any kind of loop in at least one place.concentricCircles
circleDesign with 0 parameters, call concentricCircles or multicolorCircles in at least one place.concentricCircles must draw the correct image
concentricCircles is called must match the solution image.multicolorCircles must draw the correct image
multicolorCircles is called must match the solution image.