#!/usr/bin/env python
# coding: utf-8
# ###### The cell above loads the visual style of the notebook when run.
# In[1]:
from IPython.core.display import HTML
css_file = '../styles.css'
HTML(open(css_file, "r").read())
# # Programming with Python
# ---
#
# *These lessons are modified from Software Carpentry's [python lesssons](http://swcarpentry.github.io/python-novice-inflammation) to be more specific to astronomy and cover Python 3.*
#
# The best way to learn how to program is to **do something useful**, so this
# introduction to Python is built around a common scientific task: data
# analysis.
#
# Our goal in this lesson isn't to teach you all of Python's syntax, but
# to teach you the basic concepts that all programming depends upon.
#
# We are studying data on the brightnesses of stars in a small patch of sky. We have a dozen
# data sets covering different time spans. The data sets are stored in [comma-seperated-values](http://swcarpentry.github.io/python-novice-inflammation/reference.html#comma-separated-values)
# (CSV) format. Each row holds information for a single star, and the columns represent successive days.
# The first few rows of our first file might look like this:
#
#
# >~~~
# 0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4
# 0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5
# 0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3
# 0,0,2,0,4,2,2,1,6,7,10,7,9,13,8,8,15,10,10,7,17,4,4,7,6,15,6,4,9,11,3,5,6,3,3,4
# 0,1,1,3,3,1,3,5,2,4,4,7,6,5,3,10,8,10,6,17,9,14,9,7,13,9,12,6,7,7,9,6,3,2,2,4
# ~~~
#
#
# We want to:
#
# * load that data into memory,
# * calculate the average brightness per day across all stars, and
# * plot the result.
#
# To do all that, we'll have to learn a little bit about programming.
#
#
#
Learning Objectives
#
#
#
# > Learners need to understand the concepts of files and directories
# > (including the working directory) and how to start a Python
# > interpreter before tackling this lesson. This lesson references the Jupyter
# > Notebook although it can be taught through any Python interpreter. The commands in this
# > lesson pertain to Python 3.2.
#
#
# > If you haven't already you will need to download some files to follow this lesson:
# >
# > 1. Make a new folder somewhere on your computer called `python-bootcamp`.
# > 2. Download the [zip archive](https://github.com/StuartLittlefair/python-bootcamp/zipball/master) of the Python bootcamp notebooks. Move the zip file to the python-bootcamp folder.
# > 3. If it's not unzipped yet, double-click on it to unzip it. You should end up with a new folder called `data`, a few other folders and a number of Jupyter notebooks for you to run, including this one.
# > 4. Start the Jupyter notebook server, and open this notebook - named '00-index.ipynb'
#
# ## Topics
#
# 1. Analysing Star Data: [notebook](01-numpy.ipynb)
# 2. Repeating Actions with Loops: [notebook](02-loop.ipynb)
# 3. Storing Multiple Values in Lists: [notebook](03-lists.ipynb)
# 4. Analysing Data from Multiple Files: [notebook](04-files.ipynb)
# 5. Making Choices: [notebook](05-cond.ipynb)
# 6. Creating Functions: [notebook](06-func.ipynb)
# 7. Errors and Exceptions: [notebook](07-errors.ipynb)
# 8. Defensive Programming: [notebook](08-defense.ipynb)
#
# ## Other Resources
#
# * [Reference](reference.html)