diff --git a/Exercises/01-python/intro_to_python.ipynb b/Exercises/01-python/intro_to_python.ipynb index 15bb71a..bc9042f 100644 --- a/Exercises/01-python/intro_to_python.ipynb +++ b/Exercises/01-python/intro_to_python.ipynb @@ -1,1528 +1,2055 @@ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction to Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This notebook was developed for the CS-233 Introduction to Machine Learning course at EPFL, adapted for the CIVIL-226 Introduction to Machine Learning for Engineers course, and re-adapted for the ME-390. We thank contributers in CS-233 ([CVLab](https://www.epfl.ch/labs/cvlab)) and CIVIL-226 ([VITA](https://www.epfl.ch/labs/vita/)).\n", " \n", "**Author(s):** Sena Kiciroglu, minor changes by Tom Winandy and David Mizrahi\n", "
\n", "Welcome to the first exercise of Introduction to Machine Learning. Today we will get familiar with Python, the language we will use for all the exercises of this course. \n", "\n", "This week we will introduce some important concepts in the basics of Python. Next week, you will learn how to work with NumPy, a popular Python library used for scientific computing. \n", "\n", "Python is a popular language to use for machine learning tasks. This is especially true because of the selection of **libraries and frameworks**, developed specifically for machine learning and scientific computing. To name a few, you have Keras, TensorFlow and PyTorch for developing neural networks, SciPy and NumPy used for scientific computing, Pandas for data analysis, etc. (You might also get to dabble in PyTorch in the upcoming weeks.)\n", "\n", "Python also allows you to write quick, readable, high-level code. It's great for fast prototyping. \n", "\n", "You can find a useful Python cheatsheet at: https://www.pythoncheatsheet.org/\n", "\n", "Let's get into it!\n" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## 1. Jupyter Notebook\n", "\n", "In these exercises we will use Jupyter Notebooks, which contain Python code, text explanations and visuals. \n", "\n", "The Jupyter Notebook document (such as the one you are looking at right now) consists of cells containing Python code, text or other content. You can run each cell by clicking on the button `Run` in the top toolbar, or you can use a keyboard shortcut `Ctrl` + `Enter` (run current cell) or `Shift` + `Enter` (run current cell and move to the cell below)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Indentation and Control Flow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we get to start doing some coding!\n", "\n", "First thing to know: Python does not separate different lines of code with a semicolon `;`. So just RUN the following cell with no worries." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 1, + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First line of code. I will declare some variables\n", + "My variables are: a = 1, b = 2, c = Fish\n" + ] + } + ], "source": [ "# This is a Python comment. Start the line with `#` for a comment\n", "print(\"First line of code. I will declare some variables\")\n", "a = 1 # second line!!\n", "b = 2\n", "c = \"Fish\"\n", "print(f\"My variables are: a = {a}, b = {b}, c = {c}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Easy! However, in Python you have to be careful and have perfect indentation (a reason why Python code is so readable). The reason is, Python uses indentation to keep track of what is part of the if statement, the loops and the functions. This is different from Java (this is assuming you know Java) where you would have curly brackets `{ }` for this purpose. \n", "\n", "Let's start with the if statement.\n", "\n", "### 2.1. If Statement\n", "\n", "The rule is, all indented parts after the `if condition :` belong to that branch of the if statement. \n", "\n", "```python\n", "if condition :\n", " inside the statement\n", " still inside the statement\n", "elif condition:\n", " inside the else-if part of the statement\n", "else:\n", " inside the else part of the statement\n", "outside the statement\n", " ```\n", " \n", "Let's see it in action:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "It's me again! We are inside the first if statement\n", + "It's optional to use parentheses for the condition a + b ==3\n", + "Don't forget to put a `:` at the end of the condition!!\n", + "This is a second if statement inside the first one\n", + "I'm out of the second if statement, but still inside the first one\n", + "I'm not inside any of the if statements\n" + ] + } + ], "source": [ "if a + b == 3:\n", " print(\"It's me again! We are inside the first if statement\")\n", " print(\"It's optional to use parentheses for the condition a + b ==3\")\n", " print(\"Don't forget to put a `:` at the end of the condition!!\")\n", " if (c == \"Fish\"):\n", " print(\"This is a second if statement inside the first one\")\n", " print(\"I'm out of the second if statement, but still inside the first one\")\n", "else:\n", " print(\"This is the else part of the first if statement.\")\n", " print(\"These lines will never be printed!\")\n", "print(\"I'm not inside any of the if statements\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise \n", "\n", "Let's see another if statement example. Try to figure out what the output will be **BEFORE** running the cell below.\n", "\n", "Reminder, we declared\n", "\n", "```python\n", "a = 1\n", "b = 2\n", "c = \"Fish\"\n", " ```" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "6\n", + "8\n", + "10\n" + ] + } + ], "source": [ "# Don't run me until you find the output first!\n", "if a == 5:\n", " print (\"1\")\n", " if b == 1:\n", " print(\"2\")\n", "# here comes an else-if \n", "elif a == 2 or c == \"Fish\":\n", " print(\"3\")\n", " \n", " if b == 1:\n", " print(\"4\")\n", " if b == 2:\n", " print(\"5\")\n", " if b == 2:\n", " print(\"6\")\n", " if c == \"Fish\":\n", " if a == 1:\n", " if b == 100:\n", " print(\"7\")\n", " else:\n", " print(\"8\")\n", " elif a == 1:\n", " print(\"9\")\n", "print (\"10\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2. Loops\n", "\n", "Let's talk about loops. The syntax for a while-loop is:\n", "\n", "```python\n", "while condition:\n", " inside the loop\n", " inside the loop\n", " inside the loop\n", "outside the loop\n", " ```\n", " \n", " A small example:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Count is 1\n", + "Count is 2\n", + "Count is 3\n", + "Left the loop!\n" + ] + } + ], "source": [ "count = 0\n", "while count < 3:\n", " count += 1 # this is the same as count = count +1\n", " print(f\"Count is {count}\")\n", "print(\"Left the loop!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For-loops iterate through sequences, in this way:\n", "\n", "```python\n", "for x in sequence:\n", " inside the loop\n", " inside the loop\n", " inside the loop\n", "outside the loop\n", "```\n", " \n", " An example is shown below:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "salmon\n", + "*\n", + "trout\n", + "*\n", + "parrot\n", + "*\n", + "clown\n", + "*\n", + "dory\n", + "*\n", + "fish list over!\n" + ] + } + ], "source": [ "#Here is a basic list of strings\n", "fish_list = [\"salmon\", \"trout\", \"parrot\", \"clown\", \"dory\"]\n", "\n", "#The for loop:\n", "for fish in fish_list:\n", " print(fish)\n", " print(\"*\")\n", "print(\"fish list over!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An incredibly useful built-in function to use in for loops is `range()`. Range allows you to create a sequence of integers from the start (default is 0), to the stop, with a given step size (default is 1). We can use `range()` in for loops as shown in the example below." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "**\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "**\n", + "2\n", + "4\n", + "6\n", + "**\n", + "6\n", + "5\n", + "4\n", + "3\n", + "2\n", + "1\n", + "0\n" + ] + } + ], "source": [ "# \"default start is 0, default step size is 1\"\n", "for number in range(7):\n", " print (number)\n", "print(\"**\")\n", "\n", "# now we also provide the start as 2.\n", "# Default step size 1 is still used.\n", "for number in range(2,7):\n", " print(number)\n", "print(\"**\")\n", "\n", "# now we also provide the step size as 2.\n", "for number in range(2,7,2):\n", " print(number)\n", "print(\"**\") \n", "\n", "# what happens if step size is -1?\n", "for number in range(6,-1,-1):\n", " print(number)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One more useful built-in function will be `enumerate()`. Let's go back to the fish list.\n" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "salmon\n", + "trout\n", + "parrot\n", + "clown\n", + "dory\n" + ] + } + ], "source": [ "for fish in fish_list:\n", " print(fish)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What if I also want to keep track of the index of the list element? You can use `enumerate()` which creates a sequence of 2-tuples, where each tuple contains an integer index and an actual element of the original list. Here is how it looks like:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0: salmon\n", + "1: trout\n", + "2: parrot\n", + "3: clown\n", + "4: dory\n" + ] + } + ], "source": [ "for item_index, fish in enumerate(fish_list):\n", " print(f\"{item_index}: {fish}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Data Types and Basic Operations\n", "\n", "Python is a **dynamically typed** language. This means that the data type is inferred at run-time and can be changed during run-time. To check the type of a variable you can use the function `type()`." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 is \n", + "hi! is \n", + "0.312 is \n", + "3.0 is \n", + "(3+2j) is \n", + "True is \n" + ] + } + ], "source": [ "# var_1 is first defined as an integer\n", "var_1 = 1\n", "print(f\"{var_1} is {type(var_1)}\")\n", "\n", "# var_1's type is changed to string\n", "var_1 = \"hi!\"\n", "print(f\"{var_1} is {type(var_1)}\")\n", "\n", "# more types\n", "var_1 = 0.312\n", "print(f\"{var_1} is {type(var_1)}\")\n", "var_1 = 3.\n", "print(f\"{var_1} is {type(var_1)}\")\n", "var_1 = 3+2j\n", "print(f\"{var_1} is {type(var_1)}\")\n", "var_1 = True\n", "print(f\"{var_1} is {type(var_1)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.1. Type Casting\n", "\n", "Some examples of type casting in Python:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "42 is \n", + "42.0 is \n", + "**\n", + "3.14 is \n", + "3 is \n", + "**\n", + "100 is \n", + "100 is \n", + "**\n", + "1.23 is \n", + "1.23 is \n", + "**\n" + ] + } + ], "source": [ "# From int to float\n", "var_1 = 42\n", "print(f\"{var_1} is {type(var_1)}\")\n", "var_1 = float(var_1)\n", "print(f\"{var_1} is {type(var_1)}\")\n", "print (\"**\")\n", "\n", "# From float to int\n", "var_2 = 3.14\n", "print(f\"{var_2} is {type(var_2)}\")\n", "var_2 = int(var_2)\n", "# This operations does FLOOR, not round!\n", "print(f\"{var_2} is {type(var_2)}\")\n", "print (\"**\")\n", "\n", "# From string to int\n", "var_3 = \"100\"\n", "print(f\"{var_3} is {type(var_3)}\")\n", "var_3 = int(var_3)\n", "print(f\"{var_3} is {type(var_3)}\")\n", "print(\"**\")\n", "\n", "# From float to string\n", "var_4 = 1.23\n", "print(f\"{var_4} is {type(var_4)}\")\n", "var_4 = str(var_4)\n", "print(f\"{var_4} is {type(var_4)}\")\n", "print(\"**\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2. Basic Operations\n", "\n", "Arithmetic operations are fairly standard. There are some examples below. \n", "* Look out for the difference between `/` division and `//` integer division.\n", "* `**` is used for power.\n", "* `%` is modulo." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a + b = 57\n", + "a - b = 43\n", + "a * b = 350\n", + "a / b = 7.142857142857143\n", + "a // b = 7\n", + "a ** b = 781250000000\n", + "a % b = 1\n" + ] + } + ], "source": [ "a = 50\n", "b = 7\n", "\n", "print(f\"a + b = {a + b}\")\n", "print(f\"a - b = {a - b}\")\n", "print(f\"a * b = {a * b}\")\n", "print(f\"a / b = {a / b}\")\n", "print(f\"a // b = {a // b}\") # integer divison\n", "print(f\"a ** b = {a ** b}\") # power\n", "print(f\"a % b = {a % b}\") # modulo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Boolean operations are also fairly standard:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(True and False) = False\n", + "(True or False) = True\n", + "((True and False) or True) = True\n" + ] + } + ], "source": [ "print(f\"(True and False) = {True and False}\")\n", "print(f\"(True or False) = {True or False}\")\n", "print(f\"((True and False) or True) = {(True and False) or True}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can declare strings with a single quote `'`, a double quote `\"` or a three double quotes `\"\"\"`. The string declared with `\"\"\"` is known as a *docstring*, it can span multiple lines and is usually used to comment functions and classes.\n", "\n", "**Note:** Throughout the exercises, we will be using f-strings to format our strings nicely. You can learn more about them [here](https://realpython.com/python-f-strings/)." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Life's but a walking shadow, a poor player,\n", + "That struts and frets his hour upon the stage,\n", + "And then is heard no more. It is a tale\n", + "Told by an idiot, full of sound and fury,\n", + "Signifying nothing.\n" + ] + } + ], "source": [ "a = 'Life\\'s but a walking shadow, a poor player,' \n", "print(a)\n", "a = \"That struts and frets his hour upon the stage,\"\n", "print(a)\n", "a = \"\"\"And then is heard no more. It is a tale\n", "Told by an idiot, full of sound and fury,\n", "Signifying nothing.\"\"\"\n", "print(a)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], "source": [ "# The types of quotes do not change anything!\n", "a = \"fish\" # double quote\n", "b = 'fish' # single quote\n", "print(a == b) # the string is the same!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Lists\n", "\n", "Lists are data types containing a sequence of values. The size of the list can change during run-time, as you add and remove elements from the list. \n", "\n", "Here is how you can create lists:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list_a []\n", + "list_b [1, 2, 3, 4]\n", + "list_c [1, 'cat', 0.23]\n", + "list_d [1, ['cat', 'dog'], 2, 3]\n", + "list_e [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n", + "list_f [0, 1, 2, 3, 4]\n" + ] + } + ], "source": [ "list_a = [] # empty\n", "print(f\"list_a {list_a}\")\n", "\n", "list_b = [1, 2, 3, 4] # 4 elements\n", "print(f\"list_b {list_b}\")\n", "\n", "list_c = [1, 'cat', 0.23] # mixed types\n", "print(f\"list_c {list_c}\")\n", "\n", "list_d = [1, ['cat', 'dog'], 2, 3] # list in list\n", "print(f\"list_d {list_d}\")\n", "\n", "list_e = [1] * 10 # a list of 1s of length 10\n", "print(f\"list_e {list_e}\")\n", "\n", "list_f = list(range(5)) # turns range object into a list\n", "print(f\"list_f {list_f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we introduce some common operations with lists.\n", "* Use `len(list1)` to find the length of the list.\n", "* `list1.append(element)` to add an element to the end of the list.\n", "* `list1.insert(index, element)` to add an element to an index in the list\n", "* `list1.extend(list2)` to extend the elements of list1 with the elements of list2\n", "* `list1.pop()` removes last element from the list\n", "* `list1.pop(index)` removes the element at the given index\n", "* `list1.remove(element)` removes the first instance of the given element" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "b: ['great', 'minds', 'think', 'alike']\n", + "length of b is 4\n", + "b.append(\"sometimes\")= ['great', 'minds', 'think', 'alike', 'sometimes']\n", + "c: ['-', 'Abraham', 'Lincoln']\n", + "b.extend(c) = ['great', 'minds', 'think', 'alike', 'sometimes', '-', 'Abraham', 'Lincoln']\n", + "b.pop(6) = ['great', 'minds', 'think', 'alike', 'sometimes', '-', 'Lincoln']\n", + "b.remove(\"Lincoln\"); b.remove(\"-\") = ['great', 'minds', 'think', 'alike', 'sometimes']\n" + ] + } + ], "source": [ "# Some common operations\n", "b = [\"great\", \"minds\", \"think\", \"alike\"]\n", "print(f\"b: {b}\")\n", "\n", "# finding the length\n", "print(f\"length of b is {len(b)}\")\n", "\n", "# append element to list\n", "b.append(\"sometimes\")\n", "print(f\"b.append(\\\"sometimes\\\")= {b}\")\n", "\n", "# extend list\n", "c = [\"-\", \"Abraham\", \"Lincoln\"]\n", "b.extend(c)\n", "print(f\"c: {c}\")\n", "print(f\"b.extend(c) = {b}\")\n", "\n", "# removes element and specific index\n", "b.pop(6) \n", "print(f\"b.pop(6) = {b}\")\n", "\n", "# remove specific element\n", "b.remove(\"Lincoln\") \n", "b.remove(\"-\")\n", "print(f\"b.remove(\\\"Lincoln\\\"); b.remove(\\\"-\\\") = {b}\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also check whether an element is in a list in the following way:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\"b\" is in list\n" + ] + } + ], "source": [ "list_1 = [\"a\", \"b\", \"c\"]\n", "if \"b\" in list_1:\n", " print(\"\\\"b\\\" is in list\")\n", "else:\n", " print(\"\\\"b\\\" is not in list\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.1. List Indexing and Slicing:\n", "\n", "You can extract a single element from a list in the following way:\n", "`list1[index]`\n", "\n", "In lists, the indices start from 0. You can also index elements from the end of the list to the beginning by $-1, -2, -3...$. Check out the image below for the example list:\n", "\n", "`list_1 = [\"a\", \"b\", \"c\", \"d\", \"e\"]`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* You can extract multiple elements by slicing. This will give you elements from the start up to **(but not including)** the end index.\n", "\n", " `list1[start_index:end_index]`\n", "\n", "\n", "* If you do not specify the `start_index`, you will retrieve the elements from index $0$ up to the `end_index`.\n", "\n", " `list1[:end_index]` is the same as `list1[0:end_index]`\n", "\n", "\n", "* If you do not specify the `end_index`, you will retrieve the elements from the `start_index` up to (and **including**) the end of the list.\n", "\n", " `list1[start_index:]`\n", "\n", "\n", "* You can provide a step size.\n", " `list1[start_index:end_index:step_size]`\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise\n", "\n", "Try to write the output of the following code **BEFORE** running the cell." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list_1[-3] = c\n", + "list_1[0:2] = ['a', 'b']\n", + "list_1[:4:2] = ['a', 'c']\n", + "list_1[::-1] = ['e', 'd', 'c', 'b', 'a']\n", + "list_1[-4:-1] = ['b', 'c', 'd']\n" + ] + } + ], "source": [ "# Don't run BEFORE you solve it!\n", "list_1 = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "\n", "print(f\"list_1[-3] = {list_1[-3]}\")\n", "print(f\"list_1[0:2] = {list_1[0:2]}\")\n", "print(f\"list_1[:4:2] = {list_1[:4:2]}\")\n", "print(f\"list_1[::-1] = {list_1[::-1]}\")\n", "print(f\"list_1[-4:-1] = {list_1[-4:-1]}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also assign new values to indices using slicing. Here is an example:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['a', 'b', 'c', 'd', '<3']\n", + "['x', 'y', 'c', 'd', '<3']\n", + "[':)', 'y', ':(', 'd', ':O']\n" + ] + } + ], "source": [ "list_1 = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "\n", "list_1[-1]= \"<3\"\n", "print(list_1)\n", "\n", "list_1[0:2] = [\"x\", \"y\"]\n", "print(list_1)\n", "\n", "list_1[::2] = [\":)\",\":(\", \":O\"]\n", "print(list_1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.2. Copying\n", "\n", "We have one last thing to say about lists. Observe the behaviour of the following code:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list_1 before ['a', 'b', 'c', 'd', 'e']\n", + "list_1 after ['a', 'b', 'c', 'd', 'e', 'Z']\n" + ] + } + ], "source": [ "# Case 1:\n", "\n", "list_1 = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "print(f\"list_1 before {list_1}\")\n", "\n", "list_2 = list_1\n", "list_2.append(\"Z\")\n", "\n", "print(f\"list_1 after {list_1}\")" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list_1 before function ['a', 'b', 'c', 'd', 'e']\n", + "list_1 after function ['a', 'b', 'c', 'd', 'e', 'Z']\n" + ] + } + ], "source": [ "# Case 2:\n", "\n", "list_1 = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "print(f\"list_1 before function {list_1}\")\n", "\n", "def function_that_changes_list(input_list):\n", " input_list.append(\"Z\")\n", "\n", "function_that_changes_list(list_1)\n", "\n", "print(f\"list_1 after function {list_1}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We never changed list_1 explicitly, but the values changed anyway. What's going on?\n", "\n", "Well, in Python, when you say `list_2 = list_1`, you are not actually creating a new list, you are only copying the **reference** to the same list. This means that they are actually two variables pointing to the same list! So when you change the values of `list_2`, the values of `list_1` also change (since they are referring to the same list). Something similar is at play when you pass this list to a function. So be careful!\n", "\n", "If you do not want this to happen, you can use the function `.copy()` to create a new object with the same values. \n", "\n", "#### Exercise\n", "\n", "Change the code below and fix the two cases given above using the `.copy()` function. Make sure the contents of `list_1` do not change." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list_1 before ['a', 'b', 'c', 'd', 'e']\n", + "list_1 after ['a', 'b', 'c', 'd', 'e', 'Z']\n", + "**\n", + "list_1 before function ['a', 'b', 'c', 'd', 'e']\n", + "list_1 after function ['a', 'b', 'c', 'd', 'e', 'Z']\n" + ] + } + ], "source": [ "# Case 1\n", "list_1 = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "print(f\"list_1 before {list_1}\")\n", "\n", "list_2 = list_1\n", "list_2.append(\"Z\")\n", "\n", "print(f\"list_1 after {list_1}\")\n", "print(\"**\")\n", "\n", "# Case 2\n", "list_1 = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "print(f\"list_1 before function {list_1}\")\n", "\n", "def function_that_changes_list(input_list):\n", " input_list.append(\"Z\")\n", "\n", "list_2 = list_1\n", "function_that_changes_list(list_2)\n", "\n", "print(f\"list_1 after function {list_1}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise\n", "\n", "Now that we know how lists work, here is a quick exercise for you. Fill in the function below that takes a list and returns True if it is a palindrome, False if it is not. Palindromes are defined as sequences that read the same forwards and backwards.\n", "Examples of palindrome lists:\n", "* [\"cat\", \"dog\", \"fish\", \"dog\", \"cat\"]\n", "* [0, 1, 2, 3, 3, 2, 1, 0]\n", "* [1]\n", "* []\n", "\n", "You may use a for-loop in this exercise. However, if you're feeling ambitious try to do it in 1 line, without using a for-loop (hint: use slicing)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "def function_is_palindrome(input_list):\n", " is_palindrome = True\n", " # Your code here\n", " return is_palindrome" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test failed\n" + ] + } + ], "source": [ "test_list_1 = [\"cat\", \"dog\", \"fish\", \"dog\", \"cat\"]\n", "res_1 = function_is_palindrome(test_list_1)\n", "\n", "test_list_2 = [\"cat\", \"dog\", \"fish\", \"bird\", \"dog\", \"cat\"]\n", "res_2 = function_is_palindrome(test_list_2)\n", "\n", "test_list_3 = [\"cat\"]\n", "res_3 = function_is_palindrome(test_list_3)\n", "\n", "test_list_4 = [\"cat\", \"cat\"]\n", "res_4 = function_is_palindrome(test_list_4)\n", "\n", "if not (res_1 and not res_2 and res_3 and res_4):\n", " print(\"Test failed\")\n", "else:\n", " print(\"Correct! :)\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Tuples\n", "\n", "Tuples are similar to lists but they are fixed in size and **immutable**, which means that change is not allowed.\n", "We declare tuples in the following way using parentheses`()`:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tuple_1 = ('wash', 'your', 'hands', 'with', 'soap')\n" + ] + } + ], "source": [ "tuple_1 = (\"wash\", \"your\", \"hands\", \"with\", \"soap\")\n", "\n", "print(f\"tuple_1 = {tuple_1}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since change is not allowed, observe the result of the following piece of code." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [28]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mtuple_1\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m (\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mface\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], "source": [ "tuple_1[2] = (\"face\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can typecast from list to tuple and vice versa! " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sequence_1 = [\"here\", \"comes\", \"the\", \"sun\"]\n", "print(f\"{sequence_1} is {type(sequence_1)}\")\n", "\n", "\n", "# from list to tuple\n", "sequence_1 = tuple(sequence_1)\n", "print(f\"{sequence_1} is {type(sequence_1)}\")\n", "\n", "#from tuple to list\n", "sequence_1 = list(sequence_1)\n", "print(f\"{sequence_1} is {type(sequence_1)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Dictionaries\n", "\n", "An incredibly useful data type to know, you might also know dictionaries as \"hash maps\". Dictionaries are collections of \"key: value\" pairs. You can access the values using the keys in $O(1)$ time.\n", "\n", "The keys of a dictionary must be **immutable** and **unique**. Below we show how to define a dictionary.\n" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "shopping_list = {'apples': 3, 'pears': 2, 'eggs': 6, 'bread': 1, 'yogurt': 1}\n", + "**\n", + "book_dict = {}\n", + "book_dict = {'vonnegut': \"cat's cradle\", 'ishiguro': 'never let me go'}\n", + "**\n", + "dict_keys(['vonnegut', 'ishiguro'])\n", + "dict_values([\"cat's cradle\", 'never let me go'])\n", + "**\n", + "vonnegut : cat's cradle\n", + "ishiguro : never let me go\n", + "**\n", + "modified book_dict = {'vonnegut': \"cat's cradle\", 'ishiguro': 'a pale view of hills'}\n", + "**\n", + "book_dict with removed value = {'vonnegut': \"cat's cradle\"}\n", + "removed_value = a pale view of hills\n" + ] + } + ], "source": [ "shopping_list = {\"apples\": 3, \"pears\":2, \"eggs\":6, \"bread\":1, \"yogurt\":1}\n", "print(f\"shopping_list = {shopping_list}\")\n", "print(\"**\")\n", "\n", "\n", "book_dict = {}\n", "print(f\"book_dict = {book_dict}\")\n", "#add key value pairs\n", "book_dict[\"vonnegut\"] = \"cat\\'s cradle\"\n", "book_dict[\"ishiguro\"] = \"never let me go\"\n", "print(f\"book_dict = {book_dict}\")\n", "print(\"**\")\n", "\n", "# we can retrieve the dict keys:\n", "print(book_dict.keys())\n", "# and the dict values:\n", "print(book_dict.values())\n", "print(\"**\")\n", "\n", "#we can also iterate through the dict keys and values with a for-loop\n", "for key, value in book_dict.items():\n", " print(f\"{key} : {value}\")\n", "\n", "print(\"**\")\n", "#we can modify the value of a key\n", "book_dict[\"ishiguro\"] = \"a pale view of hills\"\n", "print(f\"modified book_dict = {book_dict}\")\n", "print(\"**\")\n", "\n", "#and we can remove a key completely\n", "removed_value = book_dict.pop(\"ishiguro\")\n", "print(f\"book_dict with removed value = {book_dict}\")\n", "print(f\"removed_value = {removed_value}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 7. Functions\n", "\n", "You can define a function in Python in the following way:" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "multiply(100, 2) = 200\n" + ] + } + ], "source": [ "def multiply(a, b):\n", " return a * b\n", "\n", "print(f\"multiply(100, 2) = {multiply(100, 2)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can have default arguments by specifying their default value in the parameters." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "add(1, 2, 100, 1000) = 1103\n", + "add(1, 2, 100) = 104\n", + "add(1, 2) = 4\n", + "add(1, 2, d=1000) = 1003\n" + ] + } + ], "source": [ "def add(a, b, c=0, d=1):\n", " return a + b + c + d\n", "\n", "# use no default arguments\n", "print(f\"add(1, 2, 100, 1000) = {add(1, 2, 100, 1000)}\")\n", "\n", "# use the default value of d\n", "print(f\"add(1, 2, 100) = {add(1, 2, 100)}\")\n", "\n", "# use the default value of c and d\n", "print(f\"add(1, 2) = {add(1, 2)}\")\n", "\n", "# use the default value of c\n", "print(f\"add(1, 2, d=1000) = {add(1, 2, d=1000)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A function can return multiple values in a tuple. You can assign the values of the tuple to separate variables. This is called **tuple unpacking**." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "min_val: 1, max_val: 4\n" + ] + } + ], "source": [ "def min_max(input_list):\n", " return min(input_list), max(input_list)\n", "\n", "\n", "test_list = [1,2,3,4]\n", "min_val, max_val = min_max(test_list)\n", "print(f\"min_val: {min_val}, max_val: {max_val}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note: You have seen tuple unpacking when using function `enumerate` in for-loop." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7.1. Common Built-in Functions\n", "\n", "Here we introduce some nifty commonly used built-in functions. \n", "\n", "* You already learned `range()`, `enumerate()`!\n", "* We have also seen `type()` to return the type of the object. We use `str()`, `int()`, `float()`, `list()`, `tuple()` for typecasting.\n", "* The functions `len()`, `sum()`, `min()`, `max()`, `any()`, `all()`, `sorted()`, `zip()` are useful for lists and tuples.\n", "\n", "Let's see them in action below" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list_1 = [0, 1, 2, 3, 4]\n", + "len(list_1) = 5\n", + "sum(list_1) = 10\n", + "min(list_1) = 0\n", + "max(list_1) = 4\n", + "**\n", + "list_2 = [5, 3, 1, 2, 0, 6]\n", + "sorted(list_2) = [0, 1, 2, 3, 5, 6]\n", + "**\n", + "list_3 = [1, 1, 1]\n", + "any(list_3) = True\n", + "all(list_3) = True\n", + "list_4 = [0, 1, 1]\n", + "any(list_4) = True\n", + "all(list_4) = False\n", + "list_5 = [0, 0, 0]\n", + "any(list_5) = False\n", + "all(list_5) = False\n", + "**\n", + "x [1, 2, 3]\n", + "y [4, 5, 6]\n", + "zipped [(1, 4), (2, 5), (3, 6)]\n" + ] + } + ], "source": [ "list_1 = list(range(5))\n", "print(f\"list_1 = {list_1}\")\n", "\n", "print(f\"len(list_1) = {len(list_1)}\")\n", "print(f\"sum(list_1) = {sum(list_1)}\")\n", "print(f\"min(list_1) = {min(list_1)}\")\n", "print(f\"max(list_1) = {max(list_1)}\")\n", "print(\"**\")\n", "\n", "\n", "list_2 = [5,3,1,2,0,6]\n", "print(f\"list_2 = {list_2}\")\n", "print(f\"sorted(list_2) = {sorted(list_2)}\")\n", "print(\"**\")\n", "\n", "\n", "# any checks whether there are any 1s in the list (OR)\n", "# all checks whether all elements are 1s. (AND)\n", "# in Python: 1 = True, 0 = False\n", "list_3 = [1, 1, 1]\n", "print(f\"list_3 = {list_3}\")\n", "print(f\"any(list_3) = {any(list_3)}\")\n", "print(f\"all(list_3) = {all(list_3)}\")\n", "\n", "list_4 = [0, 1, 1]\n", "print(f\"list_4 = {list_4}\")\n", "print(f\"any(list_4) = {any(list_4)}\")\n", "print(f\"all(list_4) = {all(list_4)}\")\n", "\n", "list_5 = [0, 0, 0]\n", "print(f\"list_5 = {list_5}\")\n", "print(f\"any(list_5) = {any(list_5)}\")\n", "print(f\"all(list_5) = {all(list_5)}\")\n", "print(\"**\")\n", "\n", "# zip function:\n", "x = [1,2,3]\n", "y = [4,5,6]\n", "zipped = zip(x,y)\n", "print(f\"x {x}\")\n", "print(f\"y {y}\")\n", "print(f\"zipped {list(zipped)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7.2. List Comprehensions\n", "\n", "One of the most practical things about Python is that you can do many things on just a single line. One popular example is so called *list comprehensions*, a specific syntax to create and initalize lists of objects. Here are some examples.\n", "\n", "A syntax for list comprehension is shown below:\n", "`[thing for thing in list]`\n", "\n", "Let's make it more concrete with an example." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "list_of_numbers = [1, 2, 3, 101, 102, 103]\n", + "doubled_list = [2, 4, 6, 202, 204, 206]\n", + "float_list = [1.0, 2.0, 3.0, 101.0, 102.0, 103.0]\n" + ] + } + ], "source": [ "list_of_numbers = [1, 2, 3, 101, 102, 103]\n", "print(f\"list_of_numbers = {list_of_numbers}\")\n", "\n", "#I want to create a new list with all these items doubled.\n", "doubled_list = [2 * elem for elem in list_of_numbers]\n", "print(f\"doubled_list = {doubled_list}\")\n", "\n", "#A new list with all these items as floats\n", "float_list = [float(elem) for elem in list_of_numbers]\n", "print(f\"float_list = {float_list}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's make it more interesting by adding an if in there:\n", "\n", "`[thing for thing in list if condition]`\n" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "conditional_doubled_list = [202, 204, 206]\n" + ] + } + ], "source": [ "#I want to create a new list with all these items doubled\n", "#IF the element is above 100\n", "conditional_doubled_list = [2 * elem for elem in list_of_numbers if elem > 100]\n", "print(f\"conditional_doubled_list = {conditional_doubled_list}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise\n", "\n", "You will be given a list of vocabulary words. Your task is to use list comprehensions to iterate through a document and create a new list including the words that are included in the vocabulary. You don't need to worry about duplicates.\n", "\n", "Example: \n", "```python\n", "vocabulary = [\"a\" \"c\", \"e\"]\n", "document = [\"a\", \"b\", \"c\", \"d\"]\n", "new_list = [\"a\", \"c\"]\n", "```" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "vocabulary = ['epfl', 'europe', 'swiss', 'switzerland', 'best', 'education', 'high', 'higher', 'research', 'school', 'science', 'students', 'technology', 'top-tier', 'university']\n", "\n", "document = \"\"\"The École polytechnique fédérale de Lausanne (EPFL) is a research institute\n", "and university in Lausanne, Switzerland, that specializes in natural sciences and engineering.\n", "It is one of the two Swiss Federal Institutes of Technology, and it has three main missions: \n", "education, research and technology transfer at the highest international level. EPFL is widely regarded \n", "as a world leading university. The QS World University Rankings ranks EPFL 12th in the world \n", "across all fields in their 2017/2018 ranking, whilst Times Higher Education World \n", "University Rankings ranks EPFL as the world's 11th best school for Engineering and Technology.\"\"\"\n", "document_parsed = document.split()\n", "document_parsed = [word.lower() for word in document_parsed]\n", "new_list = []\n", "\n", "#your code here\n", - "new_list = ...\n", + "new_list = [elem for elem in document_parsed if elem in vocabulary]\n", "\n", "#We convert the list to a set and then back to a list. We do this because converting it to a set automatically\n", "#removes duplicates (since sets are sequences that do not contain duplicates). afterwards we sort it.\n", "new_list = sorted(list(set(new_list)))\n" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correct! :)\n" + ] + } + ], "source": [ "correct_result = ['best', 'education', 'epfl', 'higher', 'research', 'school', 'swiss', 'technology', 'university']\n", "\n", "if new_list == correct_result:\n", " print (\"Correct! :)\")\n", "else:\n", " print (\"Incorrect :(\")\n" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## 8. (optional now - useful later on) Object-Oriented Programming\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Object-oriented programming is a programming paradigm that provides a means of structuring programs so that properties and behaviors are bundled into individual objects.\n", "\n", "For this end, we use classes. Classes are used to create user-defined data structures. Classes define functions called methods, which identify the behaviors and actions that an object created from the class can perform with its data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All class definitions start with the class keyword, which is followed by the name of the class and a colon. Any code that is indented below the class definition is considered part of the class’s body. To start, let's declare an `EPFL_faculty` class." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "class EPFL_faculty:\n", "\n", " def __init__(self, name, number_of_students):\n", " self.name = name\n", " self.number_of_students = number_of_students\n", "\n", " # Instance method\n", " def description(self):\n", " return f\"The faculty {self.name} has {self.number_of_students} students\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While the class is the blueprint, an instance is an object that is built from a class and contains real data. `.__init__()` sets the initial state of the object by assigning the values of the object’s properties. That is, `.__init__()` initializes each new instance of the class." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "sti = EPFL_faculty(\"STI\", 500)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that the instance `sti` has been created, we can call the method description." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'The faculty STI has 500 students'" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "sti.description()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Inheritance is the process by which one class takes on the attributes and methods of another. Newly formed classes are called child classes, and the classes that child classes are derived from are called parent classes. Child classes inherit from the parent's attributs and methods but it can overwrite methods. Let's define a class `EPFL_section` that inherits from `EPFL_faculty` and that overwrites the method `description(self)`." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "class EPFL_section(EPFL_faculty):\n", " \n", " def description(self):\n", " return f\"The section {self.name} has {self.number_of_students} students\"" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "genie_mechanique = EPFL_section(\"GM\", 200)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'The section GM has 200 students'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "genie_mechanique.description()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Disclaimer__: This part of the tutorial and its text was inspired by and taken from \"Object-Oriented Programming (OOP) in Python 3\" by David Amos. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Additional OOP resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For further information on object-oriented programming and classes in Python, here are two useful resources:\n", "* Object-Oriented Programming (OOP) in Python 3: https://realpython.com/python3-object-oriented-programming/\n", "* Classes from the official Python Tutorial: https://docs.python.org/3/tutorial/classes.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 9. (optional now - useful later on) Matplotlib" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Perhaps the most widely used plotting library in Python is Matplotlib. If you've ever used MATLAB, you'll find that the functions look pretty similar. \n", "\n", "In the following exercise sessions, we won't ask you to do any plotting. So this part is optional for those who are interested in having a short introduction.\n", "\n", "First, we will import Matplotlib." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Importing in Python\n", "\n", "* A short note on importing: to be able to use modules in our code, we import them. \n", " \n", " example: `import numpy`\n", " \n", "\n", "* We can also select a name for the imported module.\n", " \n", " example: `import numpy as np`. Now when we call numpy functions, we will always use `np.` as a prefix, i.e. `np.zeros()`\n", " \n", "\n", "* You can also choose to only import selected functions/variables/classes from the module. \n", " \n", " example: `from numpy import arange`. Now you can use this function as `arange(5)`. You cannot use any other functions from the numpy module as you did not import them." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "# To import Matplotlib we do:\n", "\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's do some plotting! \n", "\n", "Let's start with the simplest of plots, the good old line-plot. The function we will use is `plot()`" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "#Let's create some data first to plot\n", "x = list(range(10))\n", "y = [2,3,5,1,0,2,3,0,0,1]\n", "\n", "#first create a figure\n", "fig = plt.figure()\n", "\n", "#now do the plotting\n", "#specifying a color and marker are optional.\n", "#check out the documentation to see what else you can do with the plot function\n", "plt.plot(x, y, marker=\"*\", color=\"r\")\n", "\n", "#axis labels and title\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.title(\"just a random plot\")\n", "\n", "#so that we see the plot\n", "plt.show()\n", "\n", "#close the plot\n", "plt.close(fig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise\n", "\n", "You can plot two lines on top of one another by calling the `plt.plot()` function consecutively. Try to implement this! Also, specify the parameter `label` of the `plt.plot()` function and call the function `plt.legend()` to create a legend for your graph. It should look like the figure shown below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![result](images/two_lines_plot.png)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", "#Let's create some data first to plot\n", "x = list(range(10))\n", "y1 = [2,3,5,1,0,2,3,0,0,1]\n", "y2 = [1,2,3,5,1,0,2,3,0,0]\n", "\n", "#first create a figure\n", "fig = plt.figure()\n", - "#your code here\n" + "#your code here\n", + "#now do the plotting\n", + "p1 = plt.plot(x, y1, marker=\"*\", color=\"r\", label=\"dv\")\n", + "p2 = plt.plot(x, y2, marker=\"*\", color=\"b\")\n", + "#axis labels and title\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "plt.title(\"just a random plot\")\n", + "\n", + "#so that we see the plot\n", + "plt.show()\n", + "\n", + "#close the plot\n", + "plt.close(fig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can create scatter plots (line plots without lines) with `scatter()`" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "#Let's create some data first to plot\n", "x = list(range(10))\n", "y1 = [2,3,5,1,0,2,3,0,0,1]\n", "\n", "#first create a figure\n", "fig = plt.figure()\n", "\n", "#now do the plotting\n", "p1 = plt.scatter(x, y1, marker=\"*\", color=\"r\")\n", "\n", "#axis labels and title\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.title(\"just a random scatter plot\")\n", "\n", "#so that we see the plot\n", "plt.show()\n", "\n", "#close the plot\n", "plt.close(fig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And you can read and display images with `imread()` and `imshow()`" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "#first create a figure\n", "fig = plt.figure()\n", "\n", "#now do the plotting\n", "im = plt.imread(\"images/krabby_patty.jpg\")\n", "plt.imshow(im)\n", "\n", "#axis labels and title\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.title(\"krabby patty\")\n", "\n", "#so that we see the plot\n", "plt.show()\n", "\n", "#close the plot\n", "plt.close(fig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And that's all for this exercise! If you have any problems, just ask (or even Google) them. You can check out the official Python tutorials for further learning.\n", "\n", "https://docs.python.org/3/tutorial/" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python", "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.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }