.. _tut-whatnow:

*********
What Now?
*********

Reading this tutorial has probably reinforced your interest in using Python ---
you should be eager to apply Python to solving your real-world problems. Where
should you go to learn more?

This tutorial is part of Python's documentation set.   Some other documents in
the set are:

* :ref:`library-index`:

  You should browse through this manual, which gives complete (though terse)
  reference material about types, functions, and the modules in the standard
  library.  The standard Python distribution includes a *lot* of additional code.
  There are modules to read Unix mailboxes, retrieve documents via HTTP, generate
  random numbers, parse command-line options, write CGI programs, compress data,
  and many other tasks. Skimming through the Library Reference will give you an
  idea of what's available.

* :ref:`installing-index` explains how to install additional modules written
  by other Python users.

* :ref:`reference-index`: A detailed explanation of Python's syntax and
  semantics.  It's heavy reading, but is useful as a complete guide to the
  language itself.

More Python resources:

* https://www.python.org:  The major Python Web site.  It contains code,
  documentation, and pointers to Python-related pages around the Web.  This Web
  site is mirrored in various places around the world, such as Europe, Japan, and
  Australia; a mirror may be faster than the main site, depending on your
  geographical location.

* https://docs.python.org:  Fast access to Python's  documentation.

* https://pypi.python.org/pypi: The Python Package Index, previously also nicknamed
  the Cheese Shop, is an index of user-created Python modules that are available
  for download.  Once you begin releasing code, you can register it here so that
  others can find it.

* http://code.activestate.com/recipes/langs/python/: The Python Cookbook is a
  sizable collection of code examples, larger modules, and useful scripts.
  Particularly notable contributions are collected in a book also titled Python
  Cookbook (O'Reilly & Associates, ISBN 0-596-00797-3.)

* http://scipy.org: The Scientific Python project includes modules for fast
  array computations and manipulations plus a host of packages for such
  things as linear algebra, Fourier transforms, non-linear solvers,
  random number distributions, statistical analysis and the like.

For Python-related questions and problem reports, you can post to the newsgroup
:newsgroup:`comp.lang.python`, or send them to the mailing list at
python-list@python.org.  The newsgroup and mailing list are gatewayed, so
messages posted to one will automatically be forwarded to the other.  There are
around 120 postings a day (with peaks up to several hundred), asking (and
answering) questions, suggesting new features, and announcing new modules.
Before posting, be sure to check the list of :ref:`Frequently Asked Questions
<faq-index>` (also called the FAQ).
Mailing list archives are available at https://mail.python.org/pipermail/.
The FAQ answers many of the questions that come up again and again,
and may already contain the solution for your problem.

.. Postings figure based on average of last six months activity as
   reported by www.egroups.com; Jan. 2000 - June 2000: 21272 msgs / 182
   days = 116.9 msgs / day and steadily increasing. (XXX up to date figures?)
