Branching
#########

.. note::
    Learning objectives:
    Explain equalities of numbers and strings.
    Create a conditional logic tree for branching.
    Modeling a program on the prior lesson, write a comparison involving if.


* The *if* statement does your basic branching.  Here is the structure.
    * Pretend *<bool test>* is some Boolean test like *"myvariable == 1"*.

.. graphviz::

    digraph branching {
        if [ label="if <bool test>", shape=diamond ]
        elif1 [ label="elif <bool test>", shape=diamond ]
        elif2 [ label="elif <bool test>", shape=diamond ]
        elifn [ label="elif <bool test>", shape=diamond ]
        action0 [ label="Action_0", shape=box ]
        action1 [ label="Action_1", shape=box ]
        action2 [ label="Action_2", shape=box ]
        actionn [ label="Action_n", shape=box ]
        actionf [ label="Action_else", shape=box ]
        if -> action0 [ label = True, color=blue ]
        elif1 -> action1 [ label = True, color=blue ]
        elif2 -> action2 [ label = True, color=blue ]
        elifn -> actionn [ label = True, color=blue ]
        else -> actionf [ label = "otherwise", color=blue ]
        if -> elif1 -> elif2 -> elifn -> else [ label = False, color=red ]
    }

* So, how do we make a Boolean test?  We use equality and comparison statements.

* The following statements evaluate as *True*.

.. code-block:: python
    :caption: Integer 1 is *equal to* floating point value 1.0

    >>> 1 == 1.0
    True

.. code-block:: python
    :caption: Integer 1 is *greater than* or *equal to* floating point value 1.

    >>> 1 >= 1.0
    True

.. code-block:: python
    :caption: Floating point value 2.0 is *greater than* or *equal to* integer 1.

    >>> 2.0 >= 1
    True

.. code-block:: python
    :caption: Integer 2 is *greater than* integer 1.

    >>> 2 > 1
    True

.. code-block:: python
    :caption: String 'a' is *less than* or *equal to* string 'b', meaning it is first in the alphabet.

    >>> 'a' <= 'b'
    True

.. code-block:: python
    :caption: String 'A' is *less than* string 'a' because capitals come before lower case in ASCII.

    >>> 'A' < 'a'
    True

.. code-block:: python
    :caption: String 'squirrel' forced to be upper case is *equal to* string 'SQUIRREL'

    >>> 'squirrel'.upper() == 'SQUIRREL'



* Based on the prior lesson, write a program and...
    * ask the user his or her age.
    * Print "You are an adult!" if the user is equal to or greater than 18, but less than 25
    * Tell the user "You may feel like a grown-up" if he is 25 or older.
    * Otherwise, tell the user "You are a a real grown-up,"