Session03

This branch contains a complete list_lab.py
Good thought to check your input. However, it's likely rare that `None` will be passed into a function. If you were writing a set of string transformation functions that were intended to be used in any order, it would make more sense if they output an empty string `""` rather than None so that subsequent string methods do not cause attribute or type errors. Your intent may be better served by either evaluating the ``truthiness'' of the input or checking it's type. Something like:

    if not text:
        return text  # or raise an exception or the like
      
    # or

    if not isinstance(text, str):
        return text  # or raise an exception or the like