Skip to content

[3.12] gh-106996: Add the basics of a turtle graphics tutorial (GH-107072) #107109

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions Doc/includes/turtle-star.py

This file was deleted.

153 changes: 140 additions & 13 deletions Doc/library/turtle.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,10 @@
Introduction
============

Turtle graphics is a popular way for introducing programming to kids. It was
part of the original Logo programming language developed by Wally Feurzeig,
Seymour Papert and Cynthia Solomon in 1967.

Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it the
command ``turtle.forward(15)``, and it moves (on-screen!) 15 pixels in the
direction it is facing, drawing a line as it moves. Give it the command
``turtle.right(25)``, and it rotates in-place 25 degrees clockwise.
Turtle graphics is an implementation of `the popular geometric drawing tools
introduced in Logo <https://en.wikipedia.org/wiki/Turtle_
(robot)>`_, developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon
in 1967.

.. sidebar:: Turtle star

Expand All @@ -36,10 +32,141 @@ direction it is facing, drawing a line as it moves. Give it the command
.. image:: turtle-star.*
:align: center

.. literalinclude:: ../includes/turtle-star.py
In Python, turtle graphics provides a representation of a physical "turtle"
(a little robot with a pen) that draws on a sheet of paper on the floor.

It's an effective and well-proven way for learners to encounter
programming concepts and interaction with software, as it provides instant,
visible feedback. It also provides convenient access to graphical output
in general.

Turtle drawing was originally created as an educational tool, to be used by
teachers in the classroom. For the programmer who needs to produce some
graphical output it can be a way to do that without the overhead of
introducing more complex or external libraries into their work.


Tutorial
========

New users should start here. In this tutorial we'll explore some of the
basics of turtle drawing.


Starting a turtle environment
-----------------------------

In a Python shell, import all the objects of the ``turtle`` module::

from turtle import *

If you run into a ``No module named '_tkinter'`` error, you'll have to
install the :mod:`Tk interface package <tkinter>` on your system.


Basic drawing
-------------

Send the turtle forward 100 steps::

forward(100)

You should see (most likely, in a new window on your display) a line
drawn by the turtle, heading East. Change the direction of the turtle,
so that it turns 120 degrees left (anti-clockwise)::

left(120)

Let's continue by drawing a triangle::

forward(100)
left(120)
forward(100)

Notice how the turtle, represented by an arrow, points in different
directions as you steer it.

Experiment with those commands, and also with ``backward()`` and
``right()``.


Pen control
~~~~~~~~~~~

Try changing the color - for example, ``color('blue')`` - and
width of the line - for example, ``width(3)`` - and then drawing again.

You can also move the turtle around without drawing, by lifting up the pen:
``up()`` before moving. To start drawing again, use ``down()``.


The turtle's position
~~~~~~~~~~~~~~~~~~~~~

Send your turtle back to its starting-point (useful if it has disappeared
off-screen)::

home()

The home position is at the center of the turtle's screen. If you ever need to
know them, get the turtle's x-y co-ordinates with::

pos()

Home is at ``(0, 0)``.

And after a while, it will probably help to clear the window so we can start
anew::

clearscreen()


Making algorithmic patterns
---------------------------

Using loops, it's possible to build up geometric patterns::

for steps in range(100):
for c in ('blue', 'red', 'green'):
color(c)
forward(steps)
right(30)


\ - which of course, are limited only by the imagination!

Let's draw the star shape at the top of this page. We want red lines,
filled in with yellow::

color('red')
fillcolor('yellow')

Just as ``up()`` and ``down()`` determine whether lines will be drawn,
filling can be turned on and off::

begin_fill()

Next we'll create a loop::

while True:
forward(200)
left(170)
if abs(pos()) < 1:
break

``abs(pos()) < 1`` is a good way to know when the turtle is back at its
home position.

Finally, complete the filling::

end_fill()

(Note that filling only actually takes place when you give the
``end_fill()`` command.)


By combining together these and similar commands, intricate shapes and pictures
can easily be drawn.
Explanation
===========

The :mod:`turtle` module is an extended reimplementation of the same-named
module from the Python standard distribution up to version Python 2.5.
Expand Down Expand Up @@ -94,8 +221,8 @@ To use multiple turtles on a screen one has to use the object-oriented interface
omitted here.


Overview of available Turtle and Screen methods
=================================================
Turtle graphics reference
=========================

Turtle methods
--------------
Expand Down