{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains course material from [CBE30338](https://jckantor.github.io/CBE30338)\n", "by Jeffrey Kantor (jeff at nd.edu); the content is available [on Github](https://github.com/jckantor/CBE30338.git).\n", "The text is released under the [CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode),\n", "and code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Getting Started with Python and Jupyter Notebooks](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/01.01-Getting-Started-with-Python-and-Jupyter-Notebooks.ipynb) | [Contents](toc.ipynb) | [Python Conditionals and Libraries](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/01.03-Python-Conditionals-and-Libraries.ipynb) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Python Basics\n", "\n", "**A Tutorial by Jacob Gerace**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What I hope you'll get out of this tutorial\n", "* The feeling that you'll \"know where to start\" when you see python code in lecture, or when you need to write python for an assignment.\n", "* (You won't be a python expert after one hour)\n", "* Basics to variables, lists, conditionals, functions, loops, and the numpy package.\n", "* Resources to look further" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why Python?\n", "\n", "1. Clean syntax\n", "2. The same code can run on all Operating Systems\n", "3. **Extensive first and third party libraries (of particular note for our purposes is NumPy)**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Markdown Sidenote\n", " * This text is written in a Markdown block. Markdown is straightforward way to format writeups in Jupyter, but I won't cover it here for the sake of brevity. \n", " * See if you can use Markdown in your next homework, here's a link that explains the formatting: https://daringfireball.net/projects/markdown/syntax . \n", " * You can also look at existing Markdown examples (i.e. this worksheet) and emulate the style. Double click a Markdown box in Jupyter to show the code.\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### LaTeX Sidenote\n", "* LaTeX (pronounced \"La-tech\") is a language itself used widely to write documents with symbolic math\n", "* When you add a mathematical formula to these markdown blocks, the math is in LaTeX.\n", "* Ex from class: $$V \\frac{dC}{dt} = u(t) - Q C(t)$$ \n", "* A good resource: https://en.wikibooks.org/wiki/LaTeX/Mathematics\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Python Basics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Variables" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "42\n", "3.1415\n" ] } ], "source": [ "#A variable stores a piece of data and gives it a name\n", "answer = 42\n", "\n", "#answer contained an integer because we gave it an integer!\n", "\n", "is_it_thursday = True\n", "is_it_wednesday = False\n", "\n", "#these both are 'booleans' or true/false values\n", "\n", "pi_approx = 3.1415\n", "\n", "#This will be a floating point number, or a number containing digits after the decimal point\n", "\n", "my_name = \"Jacob\"\n", "#This is a string datatype, the name coming from a string of characters\n", "\n", "#Data doesn't have to be a singular unit\n", "\n", "#p.s., we can print all of these with a print command. For Example:\n", "print(answer)\n", "print(pi_approx)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### More Complicated Data Types" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Green', 'Blue', 'Red']\n", "[10, 20, 30, 40, 50, 'Sixty']\n", "Green\n", "Red\n" ] } ], "source": [ "\n", "#What if we want to store many integers? We need a list!\n", "prices = [10, 20, 30, 40, 50]\n", "\n", "#This is a way to define a list in place. We can also make an empty list and add to it.\n", "colors = []\n", "\n", "colors.append(\"Green\")\n", "colors.append(\"Blue\")\n", "colors.append(\"Red\")\n", "\n", "print(colors)\n", "\n", "#We can also add unlike data to a list\n", "prices.append(\"Sixty\")\n", "\n", "#As an exercise, look up lists in python and find out how to add in the middle of a list!\n", "\n", "print(prices)\n", "#We can access a specific element of a list too:\n", "\n", "print(colors[0])\n", "print(colors[2])\n", "\n", "#Notice here how the first element of the list is index 0, not 1! \n", "#Languages like MATLAB are 1 indexed, be careful!\n", "\n", "#In addition to lists, there are tuples\n", "#Tuples behave very similarly to lists except that you can't change them \n", "# after you make them\n", "\n", "#An empty Tuple isn't very useful:\n", "empty_tuple = ()\n", "\n", "#Nor is a tuple with just one value:\n", "one_tuple = (\"first\",)\n", "\n", "#But tuples with many values are useful:\n", "rosa_parks_info = (\"Rosa\", \"Parks\", 1913, \"February\", 4)\n", "\n", "#You can access tuples just like lists\n", "print(rosa_parks_info[0] + \" \" + rosa_parks_info[1])\n", "\n", "# You cannot modify existing tuples, but you can make new tuples that extend \n", "# the information.\n", "# I expect Tuples to come up less than lists. So we'll just leave it at that. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using Variables" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8.0\n", "3.5\n", "12.9375\n", "2.5555555555555554\n", "1\n" ] } ], "source": [ "float1 = 5.75\n", "float2 = 2.25\n", "#Addition, subtraction, multiplication, division are as you expect\n", "\n", "print(float1 + float2)\n", "print(float1 - float2)\n", "print(float1 * float2)\n", "print(float1 / float2)\n", "\n", "#Here's an interesting one that showed up in the first homework in 2017. Modulus: \n", "print(5 % 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Importing in Python: Math and plotting" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Just about every standard math function on a calculator has a python equivalent pre made.\n", "#however, they are from the 'math' package in python. Let's add that package!\n", "import math\n", "print(math.log(float1))\n", "print(math.exp(float2))\n", "print(math.pow(2,5))\n", "# There is a quicker way to write exponents if you want:\n", "print(2.0**5.0)\n", "\n", "#Like in MATLAB, you can expand the math to entire lists\n", "list3 = [1, 2, 3, 4, 5]\n", "print(2 * list3)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.749199854809259\n", "9.487735836358526\n", "32.0\n", "32.0\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nwvw/MJfrdJdgDLYAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#We can plot easily in Python like in matlab, just import the relevant package!\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", "x_vals = [-2, -1, 0, 1, 2]\n", "y_vals = [-4, -2, 0, 2, 4]\n", "plt.plot(x_vals, y_vals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loops in Python" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "1\n", "2\n", "3\n", "5\n", "8\n", "Let's try that again\n", "1\n", "1\n", "2\n", "3\n", "5\n", "8\n", "One more time:\n", "1\n", "1\n", "2\n", "3\n", "5\n", "8\n" ] } ], "source": [ "#Repeat code until a conditional statement ends the loop\n", "\n", "#Let's try printing a list\n", "fib = [1, 1, 2, 3, 5, 8]\n", "\n", "#While loops are the basic type\n", "i = 0\n", "while(i < len(fib)):\n", " print(fib[i])\n", " i = i + 1\n", " \n", "#In matlab, to do the same thing you would have the conditional as: counter < (length(fib) + 1)\n", "#This is because matlab starts indexing at 1, and python starts at 0.\n", " \n", "#The above type of loop is so common that the 'for' loop is the way to write it faster.\n", "\n", "print(\"Let's try that again\")\n", "#This is most similar to for loops in matlab\n", "for i in range(0, len(fib)) :\n", " print(fib[i])\n", "\n", "print(\"One more time:\")\n", "#Or you can do so even neater\n", "for e in fib:\n", " print(e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Additional Resources\n", "* If you still feel VERY lost: [Code Academy](https://www.codecademy.com/learn/python)\n", "\n", "* If you want a good reference site: [Official Python Reference](https://docs.python.org/2/reference/)\n", "\n", "* If you want to learn python robustly: [Learn Python the Hard Way](https://learnpythonthehardway.org/book/)\n", "\n", "* Feel free to contact me at: **jgerace (at) nd (dot) edu**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Getting Started with Python and Jupyter Notebooks](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/01.01-Getting-Started-with-Python-and-Jupyter-Notebooks.ipynb) | [Contents](toc.ipynb) | [Python Conditionals and Libraries](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/01.03-Python-Conditionals-and-Libraries.ipynb) >

\"Open

\"Download\"" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }