Homework 01
===========
**Due Date: Thursday, Feb 4, by 11:00am CST**
The Island of Dr. Moreau
------------------------
You are Dr. Moreau and you will randomly create 20 bizarre animals. Each animal
should have the following:
* A head randomly chosen from this list: snake, bull, lion, raven, bunny
* A body made up of two animals randomly chosen using the ``petname`` library
* A random number of arms; must be an even number and between 2-10, inclusive
* A random number of legs; must be a multiple of three and between 3-12, inclusive
* A non-random number of tails that is equal to the sum of arms and legs
Each of the 20 individual animals should be accessible from a list of
dictionaries. Use the ``json`` library to dump your data structure into an
``animals.json`` file. For example, your assembled data structure may look like:
.. code-block:: console
{
"animals": [
{
"head": "snake",
"body": "sheep-bunny",
"arms": 2,
"legs": 12,
"tail": 14
},
{
"head": "snake",
"body": "parrot-bream",
"arms": 6,
"legs": 6,
"tail": 12
},
... etc
Next, create a new Python script to read in ``animals.json`` and print the
details of one animal at random to screen.
What to Turn In
---------------
Your final homework should be turned in via GitHub. Create a repository under
your GitHub account for this class. Make a subfolder called ``homework01``. That
folder should contain three files:
* ``generate_animals.py``, which generates ``animals.json``
* ``animals.json``, which contains 20 bizarre animals as described above
* ``read_animals.py``, which reads ``animals.json`` and prints one animal at random to screen
The TA will git clone your repository on the due date / time, navigate to your
``homework01`` folder, and inspect your code and output. The TA will try to run
your code by typing ``python3 generate_animals.py`` followed by
``python3 read_animals.py``. Additionally, ``animals.json`` will be entered into
into a JSON validator to check if it is valid JSON.
Additional Resources
--------------------
* `The petname library `_
* `Random numbers `_
* `JSON dump `_
* `Validate JSON with JSONLint `_
* Please find us in the class slack channel if you have any questions!