.. _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:`install-index` explains how to install external 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:

* http://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.

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

* http://cheeseshop.python.org:  The Python Package Index, 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://aspn.activestate.com/ASPN/Python/Cookbook/: 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 `Frequently Asked Questions
<http://www.python.org/doc/faq/>`_ (also called the FAQ), or look for it in the
:file:`Misc/` directory of the Python source distribution.  Mailing list
archives are available at http://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.


