Skip to content
Open
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
1 change: 1 addition & 0 deletions Doc/includes/optional-module.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ If you are the distributor, see :ref:`optional-module-requirements`.
.. Similar notes appear in the docs of the modules:
- zipfile
- tarfile
- turtle
98 changes: 40 additions & 58 deletions Doc/library/turtle.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,6 @@

--------------

Introduction
============

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.

.. include:: ../includes/optional-module.rst


Get started
===========

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.

.. sidebar:: Turtle star

Turtle can draw intricate shapes using programs that repeat simple
Expand All @@ -51,21 +32,40 @@ direction it is facing, drawing a line as it moves. Give it the command
.. image:: turtle-star.png
:align: center

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.
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 drawing tools introduced in Logo
<https://en.wikipedia.org/wiki/Turtle_(robot)>`_ in 1967. It was created as an
educational tool, and its instant, visible feedback makes it an effective way
for learners to encounter programming concepts. It is also a convenient way to
produce simple graphical output without bringing in external libraries.

This document includes four main sections:

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.
* :ref:`turtle-tutorial` teaches the basics of turtle drawing.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, these aren't quite right yet, they will become more functional with follow ups (see my plan in the issue).

* :ref:`turtle-reference` describes the functions, methods and classes this
module defines.
* :ref:`turtle-howtos` details how to handle specific tasks.
* :ref:`turtle-explanation` provides background on the object-oriented
interface.

.. note::

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.
Turtle graphics requires the :mod:`tkinter` :term:`optional module`.
Installing it is not always straightforward, so check this in advance if
you're planning to use turtle graphics with a learner.
If it is missing from your copy of CPython,
look for documentation from your distributor (that is,
whoever provided Python to you).


.. _turtle-tutorial:
.. _get-started:
.. _get-started-as-quickly-as-possible:

Tutorial
========
Expand Down Expand Up @@ -108,7 +108,8 @@ 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()``.
``right()``. Many commands also have terser aliases, such as ``fd()`` for
:func:`forward`.


Pen control
Expand Down Expand Up @@ -188,38 +189,16 @@ Finally, complete the filling::
``end_fill()`` command.)


.. _turtle-howtos:
.. _turtle-how-to:
.. _how-to:

How to...
=========
How-to guides
=============

This section covers some typical turtle use-cases and approaches.


Get started as quickly as possible
----------------------------------

One of the joys of turtle graphics is the immediate, visual feedback that's
available from simple commands - it's an excellent way to introduce children
to programming ideas, with a minimum of overhead (not just children, of
course).

The turtle module makes this possible by exposing all its basic functionality
as functions, available with ``from turtle import *``. The :ref:`turtle
graphics tutorial <turtle-tutorial>` covers this approach.

It's worth noting that many of the turtle commands also have even more terse
equivalents, such as ``fd()`` for :func:`forward`. These are especially
useful when working with learners for whom typing is not a skill.

.. _note:

You'll need to have the :mod:`Tk interface package <tkinter>` installed on
your system for turtle graphics to work. Be warned that this is not
always straightforward, so check this in advance if you're planning to
use turtle graphics with a learner.


Automatically begin and end filling
-----------------------------------

Expand Down Expand Up @@ -323,8 +302,11 @@ The turtle's screen can be customised, for example::
t.screen.bgcolor("orange")


Turtle graphics reference
=========================
.. _turtle-reference:
.. _turtle-graphics-reference:

Reference
=========

.. note::

Expand Down
4 changes: 4 additions & 0 deletions Doc/tools/removed-ids.txt
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,7 @@ library/dialog.html: (page missing)
# Obsolete sections in 'turtle' docs
library/turtle.html: changes-since-python-2-6
library/turtle.html: changes-since-python-3-0

# 'turtle' documentation reorganisation (gh-157847)
library/turtle.html: note
library/turtle.html: introduction
Loading