{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "###### The cell above loads the visual style of the notebook when run." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import HTML\n", "css_file = '../styles.css'\n", "HTML(open(css_file, \"r\").read())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Programming with Python\n", "---\n", "\n", "*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.*\n", "\n", "The best way to learn how to program is to **do something useful**, so this\n", "introduction to Python is built around a common scientific task: data\n", "analysis.\n", "\n", "Our goal in this lesson isn't to teach you all of Python's syntax, but\n", "to teach you the basic concepts that all programming depends upon. \n", "\n", "We are studying data on the brightnesses of stars in a small patch of sky. We have a dozen\n", "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)\n", "(CSV) format. Each row holds information for a single star, and the columns represent successive days. \n", "The first few rows of our first file might look like this:\n", "\n", "\n", ">~~~\n", "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\n", "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\n", "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\n", "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\n", "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\n", "~~~\n", "\n", "\n", "We want to:\n", "\n", "* load that data into memory,\n", "* calculate the average brightness per day across all stars, and\n", "* plot the result.\n", "\n", "To do all that, we'll have to learn a little bit about programming." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
\n", "

Learning Objectives

\n", "
\n", "
\n", "\n", "> Learners need to understand the concepts of files and directories\n", "> (including the working directory) and how to start a Python\n", "> interpreter before tackling this lesson. This lesson references the Jupyter\n", "> Notebook although it can be taught through any Python interpreter. The commands in this\n", "> lesson pertain to Python 3.2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
\n", "

Prerequisites

\n", "
\n", "
\n", "\n", "> If you haven't already you will need to download some files to follow this lesson:\n", ">\n", "> 1. Make a new folder somewhere on your computer called `python-bootcamp`.\n", "> 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.\n", "> 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.\n", "> 4. Start the Jupyter notebook server, and open this notebook - named '00-index.ipynb'\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Topics\n", "\n", "1. Analysing Star Data: [notebook](01-numpy.ipynb)\n", "2. Repeating Actions with Loops: [notebook](02-loop.ipynb)\n", "3. Storing Multiple Values in Lists: [notebook](03-lists.ipynb)\n", "4. Analysing Data from Multiple Files: [notebook](04-files.ipynb)\n", "5. Making Choices: [notebook](05-cond.ipynb)\n", "6. Creating Functions: [notebook](06-func.ipynb)\n", "7. Errors and Exceptions: [notebook](07-errors.ipynb)\n", "8. Defensive Programming: [notebook](08-defense.ipynb)\n", "\n", "## Other Resources\n", "\n", "* [Reference](reference.html)" ] } ], "metadata": { "kernelspec": { "display_name": "IPython (Python 3)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }