{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "toc_visible": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7nSuziZlSe6l"
      },
      "source": [
        "# Lecture 1"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "d04g4l6-J0Ll"
      },
      "source": [
        "In most programming languages, the basic form of communication is through text.  Thus, one of the first programs to write in any programming language is a command to display desired text.  Following the seminal book The C Programming Language by Kernighan and Ritchie, usually, the first example is printing \"Hello world!\""
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "s5dIgCTynTin",
        "outputId": "9a4c31ac-d46d-4634-ac59-a3877658f6e6"
      },
      "source": [
        "print('hello world')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "hello world\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mrfle0MWKCce"
      },
      "source": [
        "**Exercise:** Write a program that prints out \"Life is beautiful\"."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5Nm_hGtkKDLC"
      },
      "source": [
        "As soon as you learn how to print, you are ready to use Python as a calculator"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rinMu0QlqFGJ",
        "outputId": "103c7fce-4bae-49cb-ae94-35af397aacf5"
      },
      "source": [
        "print(2*4)\n",
        "print(5-7)\n",
        "print(3/2)\n",
        "print(5+12)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "8\n",
            "-2\n",
            "1.5\n",
            "17\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "X2BGSrUMVhmm"
      },
      "source": [
        "Of courses there are many more operations - two important ones are power (**) and remainder(%).  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "liORINaKrzbr",
        "outputId": "8e3b44fc-79c5-40da-fb81-a54e4470b6e0"
      },
      "source": [
        "print(2**10)\n",
        "print(123%7)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1024\n",
            "4\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "rsQy-9TeKRzZ"
      },
      "source": [
        "Actually, if you are using the notebook, you do not need to use the print command as can be seen below. But, the below code will not show any output, if you use an IDE. So, it is better to practice correctly from the very beginning."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "v53n4xpmKU6W",
        "outputId": "1e63c93a-9ca2-4ca4-8b61-7549f269d498"
      },
      "source": [
        "2*4"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "8"
            ]
          },
          "metadata": {},
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1wQdJY-QKZOn"
      },
      "source": [
        "Also, when there are multiple lines, only the last line get executed"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "lXIwBbU_q-jk",
        "outputId": "ad7c739c-8753-4c48-d8f7-f53d5ea9e77d"
      },
      "source": [
        "2*4\n",
        "5*5\n",
        "6-7\n",
        "5/2"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "2.5"
            ]
          },
          "metadata": {},
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RhFo2qVyU-6H"
      },
      "source": [
        "Notice that when we used print function to compute, we did not put inverted commas.  Why?  Let us see what happens when we put inverted commas."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vhk92kurqswx",
        "outputId": "9b9c3c19-8f60-48e7-cc62-18c7fc8e9027"
      },
      "source": [
        "print('2*4')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "2*4\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "m3HqX2LTrke7"
      },
      "source": [
        "When we put something inside inverted commas, they are printed as it is.  \n",
        "\n",
        "Now let us do something slightly more interesting.  The idea is to write a program that take \"Distance in miles\" as input and converts it into \"Distance in Kilometers.  We already know that 1 mile is roughly 1.6 kilometers.  So, if 50 miles would be 50*1.6 kilometers - and that can be computed using Python as follows"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9j3iWCuOs9Uy",
        "outputId": "22c2cbd8-1b93-4a9c-bb8e-bf0e1eb3c68e"
      },
      "source": [
        "print(50*1.6)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "80.0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M-D7m1YJXRVL"
      },
      "source": [
        "The general idea would be to store the conversion factor 1.6 as a variable and use it.  Then we know that Distance in kilometers = conversion factor * Distance in miles.  By changing Distance in miles manually, we will be able to use the below code as a converter"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "sToVIvoZtHrM",
        "outputId": "6beac458-3482-4be4-d4b5-2df219b12219"
      },
      "source": [
        "ConversionFactor = 1.6\n",
        "DistInMiles = 236\n",
        "DistInKm = DistInMiles * ConversionFactor\n",
        "print(DistInKm)\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "377.6\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "unf5oBwYYR4j"
      },
      "source": [
        "But, ideally we would prefer if the computer asked for an input - as we did when we learnt Scratch.  So, let us learn how to ask for input in Python.  Infact, we ask for input using the function \"input\".  Let us look at an example."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "s60zW0dHuF5m",
        "outputId": "bf705ae3-6907-4f55-ed52-706d60667741"
      },
      "source": [
        "name = input('What is your name?')\n",
        "print(name)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "What is your name?dd\n",
            "dd\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "E4j-BVFYHVwS"
      },
      "source": [
        "Now that we know how to take input, we can modify our earlier code as follows:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 232
        },
        "id": "MeD2ftU4uzH2",
        "outputId": "372bc82a-1784-4b83-ce59-5a2073be8a40"
      },
      "source": [
        "ConversionFactor = 1.6\n",
        "DistInMiles = input('What is the distance to London in Miles')\n",
        "DistInKm = DistInMiles * ConversionFactor\n",
        "print(DistInKm)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "What is the distance to London in Miles100\n"
          ]
        },
        {
          "output_type": "error",
          "ename": "TypeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-10-e33435adfdc8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mConversionFactor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1.6\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mDistInMiles\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'What is the distance to London in Miles'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mDistInKm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDistInMiles\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mConversionFactor\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mDistInKm\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mTypeError\u001b[0m: can't multiply sequence by non-int of type 'float'"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XtWqwszFHsfL"
      },
      "source": [
        "But, unfortunately, the above code does not error.  And worse, we are unable to make much sense of the error message.  But, maybe we can make sense of one word \"TypeError\".  Python uses different \"types\" of data - sometimes called \"data type\".  We can find the type of a given \"object\" using the function \"type\".\n",
        "\n",
        "This also clarifies some of the earlier unexpcted behaviours.  '2*4' is a string of symbols (abbreviated str), while 2*4 is an integer (abbreviated int).  Non-integer numbers are stored as float.  Finally, notice that any input comes as a string - and that is why we could not multiply it with a float, earlier.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eR9p3Kjxvs2i",
        "outputId": "636a070e-f03c-4810-8c47-8e090f29f25e"
      },
      "source": [
        "print(type('2*4'))\n",
        "print(type(2*4))\n",
        "print(type(ConversionFactor))\n",
        "print(type(DistInMiles))\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'str'>\n",
            "<class 'int'>\n",
            "<class 'float'>\n",
            "<class 'str'>\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "NGH_zo_4KrJ9"
      },
      "source": [
        "But, often - as was the case earlier, the input string might contain a number or an integer.  And in that case, we would like to convert the string into an integer.  This can be done by type converting functions.  int converts a given data type into an integer, str converts a given data type into a string, float converts a given data type into a float and so on."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6vCoU7fHxXqj",
        "outputId": "bf9d0c6e-0d33-4b3b-986d-36df321b8202"
      },
      "source": [
        "x = int('2')\n",
        "print(x)\n",
        "print(type(x))\n",
        "y = str(x)\n",
        "print(y)\n",
        "print(type(y))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "2\n",
            "<class 'int'>\n",
            "2\n",
            "<class 'str'>\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "MkUSGopwLZzw"
      },
      "source": [
        "Of course, these conversions do not work always.  It will work only when the conversion makes sense - for example you cannot convert the string 'hello' into an integer as the string does not represent an integer."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 164
        },
        "id": "af5zBvnUyAtK",
        "outputId": "9245c413-f492-4f08-efa3-503eee3bb56f"
      },
      "source": [
        "int('hello')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "error",
          "ename": "ValueError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-13-1e0cfe654e81>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'hello'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: 'hello'"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "c7DtNM3NLwTu"
      },
      "source": [
        "Further, in some cases, the conversion is made, but we lose some information in the process.  This is especially the case when we convert a float into an integer."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WLmEhsdIyG1a",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "cdd683da-658b-4018-87b2-cb0dd31ade3d"
      },
      "source": [
        "a = 3.5\n",
        "b = int(a)\n",
        "print(b)\n",
        "c = float(b)\n",
        "print(c)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "3\n",
            "3.0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sTUbfQ36L8t3"
      },
      "source": [
        "Now that we have some understanding of datatypes, we can write the simple program that converts \"Distance in miles\" to \"Distance in kilometers\"."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mWYB9e5ayzH-"
      },
      "source": [
        "ConversionFactor = 1.6\n",
        "DistInMiles = int(input('What is the distance to London in Miles'))\n",
        "DistInKm = DistInMiles * ConversionFactor\n",
        "print(DistInKm)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "80jyaiABMVRS"
      },
      "source": [
        "**Exercise:** Write a program that converts \"Temperature in Celsius\" to \"Temperature in Farenheit\".\n",
        "\n",
        "**Exercise:** Write a program that asks for two numbers and prints the sum of the two numbers."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ksq8WKpbSpSK"
      },
      "source": [
        "# Lecture 2"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tNna8fu3RdEH"
      },
      "source": [
        "Last class we learnt how to ask for an input, but we had still not learnt how to write one of the first programs we made in Scratch - the program that asks for you name and says Hello 'your name'.  The most natural thing to try would be  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WsRv5VB7R7Yt"
      },
      "source": [
        "name = input('What is your name?')\n",
        "print(Hello name)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QNwgXzTBSLDr"
      },
      "source": [
        "But this certainly does not work as the computer thinks 'Hello name' is a variable and complains because it could not find such a variable.  We want to use the string 'Hello' and the variable name.  Remember we used a function join when we made the same program in Scratch.  The equivalent operator in Python is +"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "e-U7qtaYwaqa",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "b89b4271-9338-43c5-b3d3-f87b5f201f4a"
      },
      "source": [
        "name = input('What is your name?')\n",
        "print('Hello ' + name)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "What is your name?Vighnesh\n",
            "Hello Vighnesh\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8nf9_MU7Sr7t"
      },
      "source": [
        "This might shed more light on some of the 'errors' you encountered last class.  As inputs are by default strings, Python treats + as concatenation and thus we get unexpected results.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gUlFSm0PxOYv"
      },
      "source": [
        "x = input('a=')\n",
        "y = input('b=')\n",
        "print(x+y)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HEgkMhRlTMRx"
      },
      "source": [
        "Thus, as I had described in last class, you need to convert them to appropriate types.  Try to explore how the program under various conversions."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tHrN7wzkxlji"
      },
      "source": [
        "a = float(input())\n",
        "b = float(input())\n",
        "print(a*b)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lheQ8pPiUnaS"
      },
      "source": [
        "In additions to the usual operations +,-,* and / there are some additional operations like\n",
        "\n",
        "1.   a%b computes the remainder when we divide a by b.  Recall that we had this operation in Scratch also - and some of you had used it to make the program to determine if given number is odd or even.  \n",
        "2.   a**b computes a power b\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wB83GAgQyMcH"
      },
      "source": [
        "print(22%7)\n",
        "print(2**3)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-9bXmtiEVXvD"
      },
      "source": [
        "Another class of operations we found very useful while studying Scratch were the comparison operators.  And it is easy to see that the 'obvious code' works in most cases.  As we had already studied, we can also find the type of such objects using the type function."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ZjLJiGfsynvo"
      },
      "source": [
        "print(2>3)\n",
        "print(3>2)\n",
        "print(type(2>3))\n",
        "print(type(3>2))"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "X3JcEAJxV62C"
      },
      "source": [
        "However, notice that if you want to check if two numbers are equal, the intuitively obvious code does not work.  Try to think why it does not work."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "IFdXlBjpzbBH"
      },
      "source": [
        "print(2=3)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3FakSLubss-I"
      },
      "source": [
        "It does not work, because, = is used to 'assign' values to variables.  Thus, to check if two numbers are equal, we will use =="
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "If9pbWtNzj5H"
      },
      "source": [
        "x=2\n",
        "print(x)\n",
        "x=10\n",
        "print(x)\n",
        "print(x==3)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jZbAKdk9tLZN"
      },
      "source": [
        "Some other useful comparison operators are 'less than or equal to', 'greater than or equal to' and 'not equal to'.  The usual symbol for 'not equal to' is a crossed 'equal to' sign and the code tries to recreate this symbol."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JGVPVhWd0LL4"
      },
      "source": [
        "print(x<=5)\n",
        "print(x>=5)\n",
        "print(x!=5)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wsueOQ8eub4w"
      },
      "source": [
        "We say x is less than or equal to 5, if either x is less than 5 or x is equal to 5.  And the two can never happen simultaneously.  On the other hand, if we say x is less than 5 or x is greater than 3, then both can happen simultaneously.  In real life, depending on the context the meaning of the word 'or' can change. However, in mathematics and computer science there is a fixed meaning - the statement is true even when both are true.  For example, if x = 4, then the above statement is true.  More generally, a or b is true if atleast one of the two statements is true."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yeQUkoyB96HQ"
      },
      "source": [
        "x = 4\n",
        "x<5 or x>3"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HgfEy-LSvj3m"
      },
      "source": [
        "a and b is true, if and only if both the statements are true."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FO1OQ8ra-rqQ"
      },
      "source": [
        "4>3 and 4 == 2*2\n",
        "4 > 3 and 4 <3"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xKkyQneAv6Fs"
      },
      "source": [
        "Finally, not a is true if and only a is false.  or, and, and not form the basic boolean operators and we already encountered them when we studied Scratch."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v0gKPF0P-9wC"
      },
      "source": [
        "not 2>3"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pGqhVv6i37mY"
      },
      "source": [
        "We have now learnt how to use most operators we encountered while learning Scratch - arithmetic operators, comparison operators, boolean operators and one string operator (namely join).  We saw that we can join two strings using +."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TsNNOeYt_Yo2"
      },
      "source": [
        "print('apple' + 'banana')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VSz4KiuoEDOL"
      },
      "source": [
        "So, we can \"add\" strings.  But, we saw that we cannot multiply strings.  But the error message read \"we cannot multiply a 'non-integer' with a string.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "khO7_pZC_qeK"
      },
      "source": [
        "print('apple'*'banana')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YUrBqpifEUQg"
      },
      "source": [
        "So, it is natural to ask \"What happens if you multiply an integer with a string?\""
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v7AFi3Bt_3gr"
      },
      "source": [
        "print('hello'*3)\n",
        "print(2*'hello')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6wcj4-j-EkXI"
      },
      "source": [
        "But we will get an error if me multiply the string with a float.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LJHb4IsnAGwI"
      },
      "source": [
        "print('hello'*3.5)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "W2MpEAnjEsih"
      },
      "source": [
        "Finally, one maybe curious \"What happens if we multiply a string with a negative integer?\".  As you can see the output looks empty.  But is it really empty or do we have some whitespace is a natural question.  We can test this by adding this in between other strings."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "F_gZuFdWARCf"
      },
      "source": [
        "x = 'hello'*(-2)\n",
        "print(x)\n",
        "print(type(x))\n",
        "print('hello' + x + 'world')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7Te6GJKSIYg0"
      },
      "source": [
        "In addition there are some more extremely useful string operations.  For instance, given a string, we can find its length - or the number of characters or symbols.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "dfyMpi8SDJVo"
      },
      "source": [
        "y = 'hello'\n",
        "len(y)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3f9_yzVJI8Jt"
      },
      "source": [
        "We can also pick separate characters from the string.  However, notice that the first character is called the zeroth character.  In some sense, it is analogous to how we number floors.  Ground floor is like the zeroth floor.  Also, notice that we can also use negative indices - this counts elements from the right.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "BavIk4PaBRDP"
      },
      "source": [
        "print(y[1])\n",
        "print(y[0])\n",
        "print(y[-1])\n",
        "print(y[-2])"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RNVeb4tRFQsh"
      },
      "source": [
        "**Exercise:** We know that we cannot multiply a string with a float.  Let us write two programs which allow this \"multiplication\".  More precisely, write programs that takes a string and a float as input and does the following:\n",
        "\n",
        "1.   converts the float into an integer and multiplies the string with this integer\n",
        "2.   Converts the string into an integer (using the length function) and multiplies this integer with the float.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yQJtr7RcTCrt"
      },
      "source": [
        "# Lecture 3"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Qgp2TQv6hj2W"
      },
      "source": [
        "We studied how to do most of the elementary processes we did in Scratch.  Let us now try to recreate the more complicated problems we did.  Recall the following question you encountered in your exam.\n",
        "\n",
        "**Question:** Make a program that asks for an input and says whether the number is odd or even.  \n",
        "\n",
        "Let us recall what we needed to answer this question.  Recall that an even number is a number that has 0 as the remainder when divided by 2.  An odd numbers, on the other hand will have remainder 1.  This idea was used by atleast some of you to solve the question during the exam.  In Scratch we had the mod function to find the remainder.  Recall that we already encountered the analogous operator % in Python"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XTcgeOUIhl0H"
      },
      "source": [
        "print(28%5)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "htOwTbJeaQXJ"
      },
      "source": [
        "\n",
        "Given this, we know the algorithm that would do the required task:\n",
        "\n",
        "1.   Ask for an input and store it as a variable n\n",
        "2.   If n%2 is 0, then print \"The number is even\" else print \"The number is odd\"\n",
        "\n",
        "Thus, all that remains, is to learn how to code step 2 in Python.  And, the code is actually quite obvious - just be careful of the intendation!\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4qQYIdAoFctD"
      },
      "source": [
        "n = int(input('Give me an integer: '))\n",
        "if n%2 == 0:\n",
        "  print('The number is even')\n",
        "else:\n",
        "  print('The number is odd')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wtpvrNath7gg"
      },
      "source": [
        "This also helps us write other interesting programs.  As an example, let us write a program that determines if you are legally allowed to drive."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3HEwpmxJcHZP"
      },
      "source": [
        "age = int(input('What is your age? '))\n",
        "if age < 18:\n",
        "  print('You are not eligible to drive')\n",
        "else:\n",
        "  license = input('Do you have license? Enter Y/N ')\n",
        "  if license == 'Y':\n",
        "    print('You are eligible to drive')\n",
        "  else:\n",
        "    print('You are not eligible to drive')\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Y7ulMnGOiHFW"
      },
      "source": [
        "Notice the intendation in this code.  The current intendation means that the program checks if you have a license or not only if you are above 18.  If we change the intendation and write it as below, then something wierd happens.  \n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LxRlfuypdq-b"
      },
      "source": [
        "age = int(input('What is your age? '))\n",
        "if age < 18:\n",
        "  print('You are not eligible to drive')\n",
        "else:\n",
        "  license = input('Do you have license? Enter Y/N ')\n",
        "if license == 'Y':\n",
        "  print('You are eligible to drive')\n",
        "else:\n",
        "  print('You are not eligible to drive')\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ezha739Xi3Eh"
      },
      "source": [
        "More precisely, the code\n",
        "\n",
        "```\n",
        "if license == 'Y':\n",
        "  print('You are eligible to drive')\n",
        "else:\n",
        "  print('You are not eligible to drive')\n",
        "```\n",
        "runs even when age is less than 18 - but notice that the computer did not ask \"Do you have license\".  So, why did it not throw up an error.  The computer did not throw up an error because, some value for license is stored inside due to the previous block of code.  This can be seen by adding a print statement."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JPkMPx-NjVwA"
      },
      "source": [
        "age = int(input('What is your age? '))\n",
        "if age < 18:\n",
        "  print('You are not eligible to drive')\n",
        "  print(license)\n",
        "else:\n",
        "  license = input('Do you have license? Enter Y/N ')\n",
        "if license == 'Y':\n",
        "  print('You are eligible to drive')\n",
        "else:\n",
        "  print('You are not eligible to drive')\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IsURCKI0jvGa"
      },
      "source": [
        "If you add a variable that was not used earlier, the computer will throw up an error as we expect it to do."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "36d0oykcj1o0"
      },
      "source": [
        "age = int(input('What is your age? '))\n",
        "if age < 18:\n",
        "  print('You are not eligible to drive')\n",
        "  print(license)\n",
        "  print(divakaran)\n",
        "else:\n",
        "  license = input('Do you have license? Enter Y/N ')\n",
        "if license == 'Y':\n",
        "  print('You are eligible to drive')\n",
        "else:\n",
        "  print('You are not eligible to drive')\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VB56ACFcj_jL"
      },
      "source": [
        "There is another way to write the previous program using logical operators.  In fact, the power/use of logical operators become clear only once we start using if...then...else statements."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qM7mggz-fdK4"
      },
      "source": [
        "age = int(input('What is your age? '))\n",
        "license = input('Do you have license? Enter Y?N ')\n",
        "if age >=18 and license == 'Y':\n",
        "  print('You are eligible to drive')\n",
        "else:\n",
        "  print('You are not eligible to drive')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BotolF8CkedV"
      },
      "source": [
        "Let us now go back to the first problem - a program that asks for a number and determines if it is even or odd.  Recall that when we discussed this problem in Scratch, we looked at some other ways of doing it.  Most importantly, we saw that we can avoid using % - this was done by looking at the last digit of the number.  If the last digit is 0 or 2 or 4 or 6 or 8, then the number is even.  This can be programmed as below.  Note two things:\n",
        "1. We keep n as a string\n",
        "2. We can either check if the last character of the string is the string '0' or you can convert the last character to a number and check if this number is equal to 0."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KqlhBtg6hMfS"
      },
      "source": [
        "n = input('Give me an integer: ')\n",
        "if n[-1] == '0' or int(n[-1]) == 2 or n[-1] == '4' or n[-1] == '6' or n[-1] == '8':\n",
        "  print('The number is even')\n",
        "else:\n",
        "  print('The number is odd')\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ickl-X2Rm5Ip"
      },
      "source": [
        "It was suggested that the above code can be simplified as follows."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nVug9LbQiREu"
      },
      "source": [
        "n = input('Give me an integer: ')\n",
        "if n[-1] in '02468':\n",
        "  print('The number is even')\n",
        "else:\n",
        "  print('The number is odd')\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lMSAJV0qnA9T"
      },
      "source": [
        "It clearly works, but we do not fully understand parts of the code.  For instance, we did not encounter 'in' between.  'in' allows us check if a string contains another string.  Clearly, this is a very handy tool.  Let us look at some examples.   "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "g1FHVZHqihz8"
      },
      "source": [
        "print('e' in 'apple')\n",
        "print('d' in 'apple')\n",
        "print('app' in 'apple')\n",
        "print('apl' in 'apple')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "rx1Kr8lvoAZI"
      },
      "source": [
        "Finally, there is yet another way to write the program that takes an input and determines if the number is even or odd.  Of course, the program itself is a bit silly, but it reveals some important syntax.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "pFHsVJJdiwLO"
      },
      "source": [
        "n = input('Give me an integer: ')\n",
        "if n[-1] == '0':\n",
        "  print('The number is even')\n",
        "elif n[-1] == '2':\n",
        "  print('The number is even')\n",
        "elif n[-1] == '4':\n",
        "  print('The number is even')\n",
        "elif n[-1] == '6':\n",
        "  print('The number is even')\n",
        "elif n[-1] == '8':\n",
        "  print('The number is even')\n",
        "else:\n",
        "  print('The number is odd')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YDk2Z0VJobFC"
      },
      "source": [
        "In a general situation, we will have a code that looks as follows\n",
        "```\n",
        "if condition1 is true:\n",
        "  scenario 1 happens\n",
        "elif condition2 is true:\n",
        "  scenario 2 happens\n",
        "elif condition3 is true:\n",
        "  scenatio 3 happens\n",
        "else:\n",
        "  scenario 4 happens\n",
        "```\n",
        "It is important to notice that the conditions are not all equal, but there is an order of priority.  Condition 1 has more priority that Condition 2 which has more priority than Condition 3.  Let us try to understand this using some examples.  Consider the code\n",
        "\n",
        "```\n",
        "If you have a car:\n",
        "  let us go by car\n",
        "elif you have a bike:\n",
        "  let us go by bike\n",
        "else: let us go by bus\n",
        "```\n",
        "Notice that if you have a car, irrespective of whether you have a bike or not, you will go by car under the above code.  More precisely, once Condition 1 (that is 'if you have a car') is satisfied, the rest of the code will not be executed.  Let us look at another example: assume you would happily eat any icecream, but chocolate is your favourite, butterscotch is the second, and vannila is the third.  Then you can say you follow the following algorithm to choose the flavour\n",
        "\n",
        "```\n",
        "If you have chocolate icecream:\n",
        "  I will take chocolate icecream\n",
        "elif you have butterscotch icecream:\n",
        "  I will take butterscotch icecream\n",
        "elif you have vannila icecream:\n",
        "  I will take vannila icecream\n",
        "else:\n",
        "  Give me any flavour of your choice\n",
        "```\n",
        "\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4ZT0Yovolr5B"
      },
      "source": [
        "**Exercise:** Assume your preference of icecreams is as follows - pista is your favourite, strawberry is second, chocolate is third, and vannila is fourth.  If none of these are available, then you would not eat icecream.  Write the algorithm that describes this preference.  \n",
        "\n",
        "**Exercise:** What would happen if both conditions are true?  More precisely, guess what happens if we use the following code.  Test if your guess is correct.\n",
        "\n",
        "```\n",
        "n = int(input('Enter an integer less than 10'))\n",
        "if n%2 == 0:\n",
        "  print('The number is even')\n",
        "elif n%3 == 0:\n",
        "  print('The number is divisible by 3')\n",
        "else:\n",
        "  print('The number is prime')\n",
        "```\n",
        "**Exercise:** Write a program that determines if you need a negative RT-PCR report.  More precisely, the program asks for the state you are coming from and says you need an negative RT-PCR report if you are from Maharashtra or Kerala.\n",
        "\n",
        "**Exercise:** Write a program that asks for an integer and determines if it is divisible by 5 or not. (Do not use %)\n",
        "\n",
        "**Exercise:** Write a program that asks for an integer less than 100 and determines if it is prime or not"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YGI1otwETUZ8"
      },
      "source": [
        "# Lecture 4"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0ZEe2pOKyjfm"
      },
      "source": [
        "In the last class, we wrote a program that determines if a given number less than 100 is a prime or not.  Some people were already thinking how we can write a more general program that determines if a given natural number is prime or not.  The easy way was to check if the number was divisible by any of the numbers less than itself and greater than 1.  First let us recall how we would write this program in Scratch and then we can see how to \"translate\" the program into Python.  In Scratch, the program would look as follows:\n",
        "\n",
        "![Screenshot 2021-09-26 at 12.07.02 PM.png](data:image/png;base64,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ESW46RsTEy6AAAiAAAiAAAiAQEEJIBhNQfEOFS7Bav72h70kwWtEZDtsHrLbXDyzbc5L7WIaEor4eeZ6kCLREFXV2emKLy6keUsr8lI+CgEBEAABEAABEAABEMiOAER2drwmnbu7PUTrH2unLa/3UU9HaNLljHkjW6LMmOtRwqSfcF4zB8ixjJkVF0AABEAABEAABEAABApLACK7sHzTlh4cjJG3L0LxWCLt9WxPWm1mnr22kc2en5nxbOtHfhAAARAAARAAARAAgVQCENmpPHAEAiAAAiAAAiAAAiAAAjkTwNRnzghRAAiAAAiAAAiAAAiAAAikEoDITuWBIxAAARAAARAAARAAARDImQBEds4IUQAIgAAIgAAIgAAIgAAIpBKAyE7lgSMQAAEQAAEQAAEQAAEQyJkARHbOCFEACIAACIAACIAACIAACKQSgMhO5YEjEAABEAABEAABEAABEMiZAER2zghRAAiAAAiAAAiAAAiAAAikEoDITuWBIxAAARAAARAAARAAARDImQBEds4IUQAIgAAIgAAIgAAIgAAIpBKAyE7lgSMQAAEQAAEQAAEQAAEQyJkARHbOCFEACIAACIAACIAACIAACKQSgMhO5YEjEAABEAABEAABEAABEMiZAER2zghRAAiAAAiAAAiAAAiAAAikEoDITuWBIxAAARAAARAAARAAARDImQBEds4IUQAIgAAIgAAIgAAIgAAIpBKAyE7lgSMQAAEQAAEQAAEQAAEQyJkARHbOCFEACIAACIAACIAACIAACKQSgMhO5YEjEAABEAABEAABEAABEMiZAER2zghRAAiAAAiAAAiAAAiAAAikEoDITuWBIxAAARAAARAAARAAARDImQBEds4IUQAIgAAIgAAIgAAIgAAIpBKAyE7lgSMQAAEQAAEQAAEQAAEQyJkARHbOCFEACIAACIAACIAACIAACKQSgMhO5YEjEAABEAABEAABEAABEMiZAER2zghRAAiAAAiAAAiAAAiAAAikEoDITuWBIxAAARAAARAAARAAARDImYCuRHZHezv5fL6cO1VqBRi1336/n3p6eigUCpXakOXcXqOOOfqd86NTUgXgbxyfZyX1wObQWDzreNbTPT7WdCen4px8+IYjEQr39ZHFYiGXyzUVzSh6nUbtt3yZ8nq9FIvFKJFIkNlsJpvNVnT+U1GhUccc/TbWexv+xvF5ZpTPcTzreNbHetZ1M5Pt9ngUvWO328lq1Y32L7gGM2q/ZZxFVMsXKtmKyDZKMuqYo9/Gem/D3zgRPs+M8a6OZx3P+lhPuol/qk+MdbHY5wOBgCKwjTKjqfI1ar+j0agyky1fqkRsGykZdczRb2P8WqP+LeNv3GqYX+jUMTfq3ziedTzr6t+Adqsrka1tGPZBAARAAARAAARAAARAoFQJGOc3+lIdIbQbBEAABEAABEAABECg5AhAZJfckKHBIAACIAACIAACIAACeicAka33EUL7QAAEQAAEQAAEQAAESo4ARHbJDRkaDAIgAAIgAAIgAAIgoHcCENl6HyG0DwRAAARAAARAAARAoOQIQGSX3JChwSAAAiAAAiAAAiAAAnonAJGt9xFC+0AABEAABEAABEAABEqOwP8HOFSqmr7RhAcAAAAASUVORK5CYII=)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xAVtVBEK2Whl"
      },
      "source": [
        "Now we know how to do most of these steps in Python:\n",
        "1. We know how to ask for an input\n",
        "2. How to set variables\n",
        "3. How to use if...then...\n",
        "4. How to say/print\n",
        "5. Arithmetic operations\n",
        "\n",
        "The only part we have not encountered so far is: how to repeat a step n times.  For this we use something called a 'for loop'.  And the code looks as follows.\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Dfk5H131meoQ"
      },
      "source": [
        "n = int(input('Give me a number'))\n",
        "k = 2\n",
        "for i in range(n-2): # this acts as repeat n times\n",
        "  if n%k == 0:\n",
        "    print('The number is not prime')\n",
        "    break # takes you outside the for loop\n",
        "  k = k + 1\n",
        "else:\n",
        "  print('The number is prime')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GgooTQeN5uJR"
      },
      "source": [
        "But notice that there is so much that we do not understand in this statement.  To begin with, we don't understand the what range(n-2) stands for.  Let us use our usual trick of using print."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "x3ERhF981Ug8"
      },
      "source": [
        "print(range(5))"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M6u0qY2E6LUe"
      },
      "source": [
        "OK, that was not so helpful.  Let us check its type."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eZRt-qwH6RQ0"
      },
      "source": [
        "print(range(5))\n",
        "print(type(range(5)))"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_QjKFGkd6XqZ"
      },
      "source": [
        "Even that was not so helpful.  But, we can try something else:\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "C48aZDM92eCb"
      },
      "source": [
        "for i in range(5):\n",
        "  print(i)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QMY_Rb_e7E3y"
      },
      "source": [
        "So, in a sense we feel range(5) is something that contains the numbers 0,1,2,3,4.  Further recall that we have encountered 'in' before.  We used it to determine if a given string is in another string.  For instance\n",
        "\n",
        "```\n",
        "'a' in 'apple'\n",
        "```\n",
        "would say if the string 'a' was in the string 'apple' or not.  Let us try to replace range(5) by 'apple' in the above code.\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "piyWnTw77bBV"
      },
      "source": [
        "for i in 'apple':\n",
        "  print(i)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "olf_4sWs7kz3"
      },
      "source": [
        "This further strengthens the idea that range(6) is something that contains the numbers 0,1,2,3,4.  Further notice that the following two codes behave identically.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "22Pzkuok80OU"
      },
      "source": [
        "for i in 'apple':\n",
        "  print('meow')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "aOciEcxt32gd"
      },
      "source": [
        "for i in range(5):\n",
        "  print('Meow')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5PZpyJss8766"
      },
      "source": [
        "So, any object with n things inside would do the trick.  range(n) is just a convenient trick to construct an object with n things inside.  Further recall that when we ran\n",
        "\n",
        "```\n",
        "print(range(5))\n",
        "```\n",
        "the output was range(0,5).  So, let us try giving two inputs.\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QYhGpHFA26hB"
      },
      "source": [
        "for i in range(5,13):\n",
        "  print(i)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "IeSoQCvC3Uvc"
      },
      "source": [
        "for i in range(13,5):\n",
        "  print(i)\n",
        "  print(hello)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8QIR0aa1FBFt"
      },
      "source": [
        "Thus if m < n, then range(m,n) contains the numbers m, m+1, m+2,..., n-2, n-1.  If m > n, then range(m,n) is empty.  \n",
        "\n",
        "Another line that was perhaps not clear was 'break'.  break takes you out of the current loop.  So far we have encountered one example of a loop, namely, for loop.  In general loops are used to repeat a certain code again and again.  We can nest one loop inside the other - think of it as a room inside a house. Then, if you use break, you will just go outside the room - you wont be taken outside the home.  Of course these things will become clearer with more practice.  \n",
        "\n",
        "The use of else in the code can also be a bit confusing.  So far we have used else only coupled with an if.  In other words, the code will run only if \"something does not happen\".  So, in our code, when would it print \"The number is prime\"\n",
        "\n",
        "```\n",
        "n = int(input('Give me a number'))\n",
        "k = 2\n",
        "for i in range(n-2): # this acts as repeat n times\n",
        "  if n%k == 0:\n",
        "    print('The number is not prime')\n",
        "    break # takes you outside the for loop\n",
        "  k = k + 1\n",
        "else:\n",
        "  print('The number is prime')\n",
        "```\n",
        "It will be printed if k does not divide n for any k in range(n-2).  In a sense, you should think of the above code as something analogous to\n",
        "\n",
        "```\n",
        "k = 2\n",
        "if 5%2 == 0:\n",
        "  print('The number is not prime')\n",
        "elif 5%3 == 0:\n",
        "  print('The number is not prime')\n",
        "elif 5%4 == 0:\n",
        "  print('The number is not prime')\n",
        "else:\n",
        "   print('The number is prime')\n",
        "```\n",
        "Finally, the i in 'for i in range(n):' does not have any specific meaning.  You can use any other word.  The following examples illustrate this usage\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9Oc0tkd24IeZ"
      },
      "source": [
        "for divakaran in 'apple':\n",
        "  print('Meow')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Sg3qJRqtKB1q"
      },
      "source": [
        "for divakaran in 'apple':\n",
        "  print(divakaran)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oxvSWkkrLzyx"
      },
      "source": [
        "Suppose, I do not want a,p,p,l, and e to be printed in different lines.  How do I do that in Python?  There is a way, you type"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5a0oghOi60oY"
      },
      "source": [
        "for ch in 'apple':\n",
        "  print(ch, end='')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "plCvSiNkMNLB"
      },
      "source": [
        "Notice that we can change the 'end' to any string.  By default we use '\\n' which is a character than indicates end of line.  Observe that the following two codes run identically.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3RpIgly5Mvss",
        "outputId": "2bee8471-6afa-4b58-eb1f-3addea1ef38f",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "for ch in 'apple':\n",
        "  print(ch, end='\\n')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "a\n",
            "p\n",
            "p\n",
            "l\n",
            "e\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rqo6nSLCM1th"
      },
      "source": [
        "for ch in 'apple':\n",
        "  print(ch)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wL8QRdc8M6BO"
      },
      "source": [
        "**Exercise:** Write a code that takes a string and encrypts it by adding 'sa' after every character.  \n",
        "\n",
        "**Exercise:** Write a code that takes a string encrypted by the above program and decrypts it.  In other word, it should just print every third character.  \n",
        "\n",
        "Let us look at another problem now.  Let us implement the divisibility test for 3 that we learnt in school - a number is divisible by 3 if and only if the sum of the digits is divisible by 3.  The advantage of this method is that, it is much easier to find the remainder when you divide the sum of digits by 3.  Before getting into the program let us first discuss the algorithm.  The main idea in the algorithm, once again, is that the i-th element in a string is given by n[i]\n",
        "\n",
        "1.   Ask for an integer input and save it as a string - n\n",
        "2.   Create a dummy variable d (which will finally be the sum of the digits) and set it to 0.\n",
        "3.   For i varying from 1 to length(n), d = d + n[i] (dont forget to convert n[i]) into an integer.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2mxHbAblOc1T"
      },
      "source": [
        "n = input('Enter an integer: ')\n",
        "d = 0\n",
        "for i in range(len(n)):\n",
        "  d = d + int(n[i])\n",
        "if d%3 == 0:\n",
        "  print('The number is divisible by 3')\n",
        "else:\n",
        "  print('The number is not divisible by 3')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hIU93AKHOeHI"
      },
      "source": [
        "Although, the above algorithm considerably simplified the computational process, some of you might be unsatisfied as we ended up using the % operator. Can we get rid of using the percentage operator?\n",
        "\n",
        "We can, if we use another loop that we encountered while we studied Scratch - the repeat until (boolean) loop. In Python it is called the while loop. Notice that in the above algorithm, d is itself an integer and we can use the divisibility test on d - more precisely, we can take the sum of the digits of d. In other words, we are treating d as the new n. And this process can be continued till n < 10."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "BSwFX7yXOoQR"
      },
      "source": [
        "n = input('Enter an integer: ')\n",
        "while int(n) > 10:\n",
        "  d = 0\n",
        "  for i in range(len(n)):\n",
        "    d = d + int(n[i])\n",
        "  n = str(d)\n",
        "\n",
        "if int(n) == 3 or int(n) == 6 or int(n) == 9 :\n",
        "  print('The number is divisible by 3')\n",
        "else:\n",
        "  print('The number is not divisible by 3')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ja3nSnINOv9r"
      },
      "source": [
        "**Exercise:** How many times will 'Executing while loop' be printed if we run the following while loop?\n",
        "\n",
        "\n",
        "```\n",
        "n = 0\n",
        "\n",
        "while n != 5:\n",
        "  print('Executing while loop')\n",
        "  n = n + 1\n",
        "print('Finished while loop')\n",
        "```\n",
        "**Exercise:** What about this loop?\n",
        "\n",
        "```\n",
        "n = 6\n",
        "\n",
        "while n != 5:\n",
        "  print('Executing while loop')\n",
        "  n = n + 1\n",
        "print('Finished while loop')\n",
        "```"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YdLaXfBcTdJU"
      },
      "source": [
        "# Assignment 1"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "18WJQ2axwmLH"
      },
      "source": [
        "**Question 1:** Write a program that takes a word and reverses it.  For example, if the input is apple, then the output should be elppa.  "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8_UEI90iz5b8"
      },
      "source": [
        "Answer: Explain the code you have written as the answer to this question"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Z4UP6FvH0VbU"
      },
      "source": [
        "Write your code here"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "orb6cLcPwu0u"
      },
      "source": [
        "**Question 2:** Write a program that takes a word and determines if it is a palindrome.  A palindrome is a word, sentence, verse, or even number that reads the same backward or forward.  The word malayalam is an example of a palindrome."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pOYhZ4e-0N3l"
      },
      "source": [
        "Answer: Explain the code you have written as the answer to this question"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "whp_TjPV0WWv"
      },
      "source": [
        "Write your code here"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "D3EZkA_vwNqV"
      },
      "source": [
        "**Question 3:** Write a program that asks for an integer between 1 and 10 (inclusive) and prints the multiplication table of the given number."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PH2sVBv00SnN"
      },
      "source": [
        "Answer: Explain the code you have written as the answer to this question"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "PZke4Q510XSX"
      },
      "source": [
        "Write your code here"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "l3qFlrtawbFJ"
      },
      "source": [
        "**Question 4:** Write a program that asks for a number and computes the factorial of the given number.\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "un4CVFdt0b0m"
      },
      "source": [
        "Answer: Explain the code you have written as the answer to this question"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4t8ZYO7J0YF5"
      },
      "source": [
        "Write your code here"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9xSSq3HYsdQp"
      },
      "source": [
        "# Lecture 5"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Wt9CFp86j4A4"
      },
      "source": [
        "While studying 'for loop' we saw how a string or range(m,n) could be used to iterate some instruction.  These are not the only datatypes that can be used to iterate a piece of code.  More generally, any datatype that has an ordered collection of elements can be used.  Recall that string is an ordered collection of characters.  That is why we could pick out the zeroth element, first element etc.  A data type containing and ordered collection of elements is calles a sequence type.  There are 3 prominent examples of sequence types:\n",
        "1. String\n",
        "2. List\n",
        "3. Tuple\n",
        "\n",
        "We are already quite familiar with a string and we also explored some string operations.  Even though we did not encounter list in Python, we had seen it in Scratch.  We can construct a list as follows.\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "AZDhCpozhoev",
        "outputId": "3c4d881f-6eff-4997-ac61-7e6de3b68087"
      },
      "source": [
        "l = [1,2,3] # strings are defined using square brackets and comma\n",
        "print(l)\n",
        "print(type(l))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 2, 3]\n",
            "<class 'list'>\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bZ_pQlT4h4Z-",
        "outputId": "d2d76cb5-122e-4f8b-f04b-673b409a4394"
      },
      "source": [
        "l = ['apple',2,range(3)] #the entries of a list can be an integer, string, tuple, or range.  Moreover, a list can have multiple types of elements in it\n",
        "print(l)\n",
        "print(type(l))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['apple', 2, range(0, 3)]\n",
            "<class 'list'>\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tyYau1o4kcQs"
      },
      "source": [
        "Given a list, we can pick up the i-th element of the list just like how we did with strings.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "CccR1a9yiHxA",
        "outputId": "db7f6406-f727-4863-d385-994ac82df143"
      },
      "source": [
        "print(l[0])\n",
        "print(l[1])\n",
        "print(l[2])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "apple\n",
            "2\n",
            "range(0, 3)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_xmAJmbykoKO"
      },
      "source": [
        "Tuple is completely new.  But, you have probably encountered it in your high school math classes. Recall that a point in the plane is completely determined by its x and y co-ordinate.  A point (0,1) would represent a point whose x coordinate is 0 and y co-ordinate is 1.  This pair (0,1) is an example of a tuple.  Similarly, a point in space can be represented by a tuple with 3 elements (for example (1,2,3)).  In general, the size of a tuple is not limited.  Further, in Python, a tuple or list can contain numbers, string, list or tuple.  Let us look at some examples.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "XPNSBe1HiWSi",
        "outputId": "729b0c88-0273-4c04-d140-78c287717cef"
      },
      "source": [
        "t = ([1,2,3],4,'hello',6) #the entries of a tuple can be an integer, string, list, tuple, or range.  Moreover, a tuple can have multiple types in it.\n",
        "print(t)\n",
        "print(type(t))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "([1, 2, 3], 4, 'hello', 6)\n",
            "<class 'tuple'>\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eyTRkTFNjJRV",
        "outputId": "2cead279-6df3-4c53-acb1-9adeec751bf6"
      },
      "source": [
        "print(t[0])\n",
        "print(t[1])\n",
        "print(t[2])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 2, 3]\n",
            "4\n",
            "hello\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "EbKujWXEkusz"
      },
      "source": [
        "Notice that in this example, the 0-th element is itself a list.  Thus we can pick the i-th element of that list."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5QwjaolvjYC5",
        "outputId": "3f79806e-c49e-49a4-cce4-234b5e53bcad"
      },
      "source": [
        "print(t[0][1])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "2\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ToeIqVYuk7VR"
      },
      "source": [
        "The length function also works for all three datatypes.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "JWgCTNUZjxNS",
        "outputId": "a2485778-0506-4be3-e371-e43b890cdfd5"
      },
      "source": [
        "print(len('apple'))\n",
        "print(len(l))\n",
        "print(len(t))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "5\n",
            "3\n",
            "4\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xPwfMuUemD_A"
      },
      "source": [
        "So far we picked up the i-th element of a string.  It is possible to pick out more general \"slice\" (like a slice of cake) from a string and the process is called slicing."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Is9IRvZ4kWrk",
        "outputId": "99f49813-dbd5-4c23-cb26-127e215ac404"
      },
      "source": [
        "s = 'divakarandivakaran'\n",
        "s2 = s[2:5] #the second character to the fourth character\n",
        "print(s[2:5])\n",
        "print(s2)\n",
        "print(s[:5]) # by default first entry is zero\n",
        "print(s[2:]) # by default second entry is the length of the string (datatype)\n",
        "print(s[:])\n",
        "print(s[2:8:2]) # we can use a third entry - the third entry dictates the difference between two consecutive indices\n",
        "print(s[2:8:1])\n",
        "print(s[2:8:]) # the default difference between two consecutive indices is 1\n",
        "s3 = 'asapsapsalsaesa'\n",
        "print(s3[0:15:3])\n",
        "print(s3[::3])\n",
        "print(s[::-1]) # if you use a negative index, then it starts from the right"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "vak\n",
            "vak\n",
            "divak\n",
            "vakarandivakaran\n",
            "divakarandivakaran\n",
            "vkr\n",
            "vakara\n",
            "vakara\n",
            "apple\n",
            "apple\n",
            "narakavidnarakavid\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "STxzQAnTnM5G"
      },
      "source": [
        "The techniques work almost identically for lists and tuples as seen below"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "FgEIdbbvntqx",
        "outputId": "a186f837-feba-4967-bb8f-c58a704ca902"
      },
      "source": [
        "l = [0,1,(5,6),3,4,5,6,7,8,9]\n",
        "l2 = [10,'apple',12,13]\n",
        "print(l[2:5]) # list containing the second, third and fourth element of the original string\n",
        "print(l[:5]) # the default first entry is zero\n",
        "print(l[2:]) # the default second entry is length of the list (datatype)\n",
        "print(l[:])\n",
        "print(l[2:8:2]) # we can use a third entry - the third entry dictates the difference between two consecutive indices\n",
        "print(l[2:8:1])\n",
        "print(l[2:8:]) # the default difference between two consecutive indices is 1\n",
        "l3 = l + l2 # you can concatenate two lists using +\n",
        "l4 = l*3 # l*i creates a new list in which l is repeated i times\n",
        "print(l3)\n",
        "print(l4)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[(5, 6), 3, 4]\n",
            "[0, 1, (5, 6), 3, 4]\n",
            "[(5, 6), 3, 4, 5, 6, 7, 8, 9]\n",
            "[0, 1, (5, 6), 3, 4, 5, 6, 7, 8, 9]\n",
            "[(5, 6), 4, 6]\n",
            "[(5, 6), 3, 4, 5, 6, 7]\n",
            "[(5, 6), 3, 4, 5, 6, 7]\n",
            "[0, 1, (5, 6), 3, 4, 5, 6, 7, 8, 9, 10, 'apple', 12, 13]\n",
            "[0, 1, (5, 6), 3, 4, 5, 6, 7, 8, 9, 0, 1, (5, 6), 3, 4, 5, 6, 7, 8, 9, 0, 1, (5, 6), 3, 4, 5, 6, 7, 8, 9]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Tde0bEQyoGA-",
        "outputId": "f71c8579-703e-4a7d-fb88-3c12acc146be"
      },
      "source": [
        "t = (0,1,2,3,4,5,6,7,8,9)\n",
        "t2 = ('apple', 'orange', 'banana')\n",
        "print(t[2:5]) # tuple containing elements that are in indices 2, 3, and 4\n",
        "print(t[:5]) # the default first entry is 0\n",
        "print(t[2:]) # the default second entry is length of the tuple\n",
        "print(t[:])\n",
        "print(t[2:8:2]) # we can use a third entry - the third entry dictates the difference between two consecutive indices\n",
        "print(t[2:8:]) # the default difference between two consecutive indices is 1\n",
        "print(t+t2) # we can concatenate two tuples using +\n",
        "print(t*3) # t*i creates a new tuple where t is repeated i times"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(2, 3, 4)\n",
            "(0, 1, 2, 3, 4)\n",
            "(2, 3, 4, 5, 6, 7, 8, 9)\n",
            "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)\n",
            "(2, 4, 6)\n",
            "(2, 3, 4, 5, 6, 7)\n",
            "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'apple', 'orange', 'banana')\n",
            "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7_0mlbnaoyAq"
      },
      "source": [
        "We can also change the difference between consecutive indices in the range function as shown in the following examples"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "C1dGzQYnmT22",
        "outputId": "a9a12101-a3fe-4c4a-804e-6e529e8e0ed0"
      },
      "source": [
        "for i in range(2,13,2):\n",
        "  print(i)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "2\n",
            "4\n",
            "6\n",
            "8\n",
            "10\n",
            "12\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "nCw57l3kmiDp",
        "outputId": "a6e00b77-b5d0-4e18-bf51-ffc561b525fd"
      },
      "source": [
        "for i in range(2,13,1):\n",
        "  print(i)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "2\n",
            "3\n",
            "4\n",
            "5\n",
            "6\n",
            "7\n",
            "8\n",
            "9\n",
            "10\n",
            "11\n",
            "12\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_GaVnW7ompI5",
        "outputId": "5630cfdb-0910-4bd3-d586-3afa3341df2e"
      },
      "source": [
        "for i in range(13,2,-2):\n",
        "  print(i)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "13\n",
            "11\n",
            "9\n",
            "7\n",
            "5\n",
            "3\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "N7OzUpd9rIBg"
      },
      "source": [
        "**Exercise:** Write a code that asks for your name and phone number and adds this information as a tuple (name, phone number) into an existing list of such tuples."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "x-meH7pgrd1Q"
      },
      "source": [
        "Let us look at a solution to the problem.  Notice that I have created two different cells of code.  When the first cell is run, it creates an empty list.  Now when the second cell is run, it asks for name and phone number.  Suppose this gave a tuple (a,1) and our list becomes [(a,1)].  Now, if I run the second cell once more, it will again ask for name and phone number.  If this gave to a tuple (b,2), we will have a list [(a,1),(b,2)].  This process can be continued.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Cnn5IZn3x370"
      },
      "source": [
        "l =[]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xr3cORvyyDPO",
        "outputId": "c5b8f93e-3701-47e5-b84c-3ecf0e393707"
      },
      "source": [
        "name = input('What is your name: ')\n",
        "phone = input('what is your phone number')\n",
        "l = l + [(name,phone)]\n",
        "print(l)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "What is your name: a\n",
            "what is your phone number1\n",
            "[('a', '1'), ('b', '2'), ('c', '3'), ('a', '1')]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "So-QSXHVvij4"
      },
      "source": [
        "The following code also seems to be doing the same task.  What do you think is the difference between the two?"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RqDpsoSuzPAU"
      },
      "source": [
        "l=[]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "B8ngn3JAzGYN",
        "outputId": "879cc8cb-fd35-4ef2-b655-7e5f2979e054"
      },
      "source": [
        "name = input('What is your name: ')\n",
        "phone = input('what is your phone number')\n",
        "l.append((name,phone))\n",
        "print(l)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "What is your name: b\n",
            "what is your phone number2\n",
            "[('a', '1'), ('b', '2')]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "biNngPwHv803"
      },
      "source": [
        "The difference between these two codes will help us understand the difference between tuples and lists which seemed quite similar till now.  To understand the difference we will need to understand a bit about the workings of the computer.  When we type\n",
        "```\n",
        "x = 1\n",
        "```\n",
        "the computer writes 1 in some part of its storage and the variable x points to this block of storage.  Now if we write\n",
        "```\n",
        "x = x + 1\n",
        "```\n",
        "A new number 1 + 1 = 2 is created and is stored at another location.  And we make x point to this new location.  Notice that the integer itself is not getting modified and in fact you cannot even if you want to.  Such datatypes that cannot be modified are called immutable datatypes.  Integers, strings, and tuples are immutable datatypes.  On the other hand list is a mutable datatype.  That means we can modify an existing list.  Suppose l is the list [1,2,3].  When we write\n",
        "```\n",
        "l = l + [4]\n",
        "```\n",
        "we are creating a new list [1,2,3,4] and we are making the variable point to this list.  On the other hand when we write\n",
        "```\n",
        "l.append(4)\n",
        "```\n",
        "we are modifying the existing list.  This is the fundamental difference between a list and a tuple.  In addition to append, there are several other methods that allow us to modify existing lists.  Let us look at a few examples below."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_V0RDGTo1WP4",
        "outputId": "dfd96eb7-103a-413f-b9eb-0cc1955d1262"
      },
      "source": [
        "l = [8,7,9,3,5,1,4,6,3,8,1]\n",
        "l.reverse() # reverses the list\n",
        "print(l)\n",
        "l.pop() # removes the last element\n",
        "print(l)\n",
        "l.pop(3) # removes the element in index 3\n",
        "print(l)\n",
        "l.remove(3) # removes the first occurence of 3\n",
        "print(l)\n",
        "l.sort() # sorts the list in increasing order\n",
        "print(l)\n",
        "l.sort(reverse = True) # sorts the list in decreasing order\n",
        "print(l)\n",
        "l.insert(3, 'a') # insert 'a' at index 3.\n",
        "print(l)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 8, 3, 6, 4, 1, 5, 3, 9, 7, 8]\n",
            "[1, 8, 3, 6, 4, 1, 5, 3, 9, 7]\n",
            "[1, 8, 3, 4, 1, 5, 3, 9, 7]\n",
            "[1, 8, 4, 1, 5, 3, 9, 7]\n",
            "[1, 1, 3, 4, 5, 7, 8, 9]\n",
            "[9, 8, 7, 5, 4, 3, 1, 1]\n",
            "[9, 8, 7, 'a', 5, 4, 3, 1, 1]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wglW2sgVi8vk"
      },
      "source": [
        "These methods are not available for tuples.  Now you may say, it sounds like lists are strictly more useful than tuples.  So, why use tuples at all?  There are 3 major reasons:\n",
        "\n",
        "1. Often data can be sensitive and we dont want to accidently modify it.  Thus, it is safer to store it as an immutable\n",
        "\n",
        "2. Think of the storage in computer as a long piece of paper.  As lists are mutable, Python needs to allocate an extra memory block (few cms of paper) just in case you need to extend the list.  Tuples on the contrary uses the minimum storage required.\n",
        "\n",
        "3. Sometimes when we add multiple entries, there might not be enough space to add all elements, in this case we add a pointer - the pointer says where in this long sheet of paper do we find the next element in the list.  Sometimes we might have to jump from one place to another multiple times.  On the contrary, as a tuple is immutable, the computer stores it in some place where all elements can be written together.  Thus, when we have to look up for elements in a list, it might take more time.  \n",
        "\n",
        "The following code taken from [the internet](https://towardsdatascience.com/python-tuples-when-to-use-them-over-lists-75e443f9dcd7) illustrates the memory and time difference.  It is OK if you do not fully understand the code as the aim is to just illustrate the point.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ya3Vqp0TyDJ-",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "187c8bf5-1cc0-4412-85ca-b32f07ccac36"
      },
      "source": [
        "import sys\n",
        "\n",
        "a_list = list()\n",
        "a_tuple = tuple()\n",
        "\n",
        "a_list = [1,2,3,4,5]\n",
        "a_tuple = (1,2,3,4,5)\n",
        "\n",
        "print(sys.getsizeof(a_list))\n",
        "print(sys.getsizeof(a_tuple))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "112\n",
            "96\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Ol-61P5x5o8a",
        "outputId": "a862e416-562c-4cf3-962c-902c99c4fb23"
      },
      "source": [
        "import sys, platform\n",
        "import time\n",
        "\n",
        "print(platform.python_version())\n",
        "\n",
        "start_time = time.time()\n",
        "b_list = list(range(10000000))\n",
        "end_time = time.time()\n",
        "print(\"Instantiation time for LIST:\", end_time - start_time)\n",
        "\n",
        "start_time = time.time()\n",
        "b_tuple = tuple(range(10000000))\n",
        "end_time = time.time()\n",
        "print(\"Instantiation time for TUPLE:\", end_time - start_time)\n",
        "\n",
        "start_time = time.time()\n",
        "for item in b_list:\n",
        "  aa = b_list[20000]\n",
        "end_time = time.time()\n",
        "print(\"Lookup time for LIST: \", end_time - start_time)\n",
        "\n",
        "start_time = time.time()\n",
        "for item in b_tuple:\n",
        "  aa = b_tuple[20000]\n",
        "end_time = time.time()\n",
        "print(\"Lookup time for TUPLE: \", end_time - start_time)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "3.7.12\n",
            "Instantiation time for LIST: 0.3700895309448242\n",
            "Instantiation time for TUPLE: 0.3769497871398926\n",
            "Lookup time for LIST:  0.9247815608978271\n",
            "Lookup time for TUPLE:  0.9027655124664307\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ENM4QGZ8jDf_"
      },
      "source": [
        "Hopefully, it is somewhat clear when to use what.  Of course, to master such ideas would need a lot of practice.  The above code might not have made much sense to you, but you will be able to understand it completely by the end of next week."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "33yyxdngoh1k"
      },
      "source": [
        "# Lecture 6"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "j_BMNUD_9g3X"
      },
      "source": [
        "After last class, did you try to create a tuple with a single element?  If not, you should try it.  You will realise that the obvious technique does not work - and I wanted to mention this.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fLQqRgn8pePl",
        "outputId": "53130aaf-b791-482e-cb60-e4625d7de2a2"
      },
      "source": [
        "t = (1)\n",
        "print(type(t))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'int'>\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "q1xyLaD39xNo"
      },
      "source": [
        "Now, once I say it, it is intuitively clear why it should not work.  Recall that we use the round bracket to determine the order of various operations - and we do not want the computer to get confused.  More precisely, we do not want the computer to complain it cannot divide a tuple with an integer if we type\n",
        "```\n",
        "(5+3)/2\n",
        "```\n",
        "Thus, to convey we want to form a tuple, we need to add a comma at the end.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lJ5YpKmX9xgf"
      },
      "source": [
        "t1 = (1,)\n",
        "print(type(t1))\n",
        "print(t1)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Oxpx_Csu-azN"
      },
      "source": [
        "Another aspect I forgot to mention is that, the pop function can take a parameter - we can specify the index of the element to be removed.  Thus, the difference between remove and pop is that, remove removes based on the element, but pop removes based on index.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fvFBTVKaxq5H",
        "outputId": "79808ee0-1277-48d3-a604-7dbc8e09b6d4"
      },
      "source": [
        "l = [1,2,3,4,5,6,7,8,9]\n",
        "l.pop()\n",
        "print(l)\n",
        "l.pop(3) # removes the element at index 3\n",
        "print(l)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 2, 3, 4, 5, 6, 7, 8]\n",
            "[1, 2, 3, 5, 6, 7, 8]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UDtYH7kb_NmC"
      },
      "source": [
        "Methods, however are not exclusive to lists.  Other dataypes, including immutable datatypes have methods.  If the datatype is immutable, the method does not alter the datatype, but creates a new copy.  Let us look at some examples of string methods.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SoYoExLVyHeK",
        "outputId": "139bfaa7-0fd2-44ad-fd9f-eed101cbc142"
      },
      "source": [
        "s = 'Life is BeAUtiful'\n",
        "s.lower() # creates a copy of s where all entries are in lower case\n",
        "print(s) # notice that this does not change s\n",
        "s2 = s.lower() # if we want, we can store it as a separate variable. We can even call this s - in which case we would be creating a new string and make the variable s point to this new string\n",
        "print(s2)\n",
        "s3 = s.upper() # creates a copy of s where all entries are in upper case\n",
        "print(s3)\n",
        "s4 = s.split() # creates a list containing all the words in the string. In other words, the string is split whenever there is a space.\n",
        "print(s4)\n",
        "s5 = s.split('e') # using an input parameter, you can change the string that causes a split\n",
        "print(s5)\n",
        "l = ['May', 'the', 'force', 'be', 'with', 'you']\n",
        "s6 = ' '.join(l) # takes a list of strings and constructs a single string\n",
        "print(s6)\n",
        "print(s.index('A')) # finds the first position (index) with 'A'"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Life is BeAUtiful\n",
            "life is beautiful\n",
            "LIFE IS BEAUTIFUL\n",
            "['Life', 'is', 'BeAUtiful']\n",
            "['Lif', ' is B', 'AUtiful']\n",
            "May the force be with you\n",
            "10\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g2iRjlVvCYhH"
      },
      "source": [
        "There are several such methods for each datatype and it would be impossible to discuss all of them.  But, you can use the following code to get a list of all the methods available for a datatype.  I encourage you to play with the different methods.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xbuvEvNO0gIN",
        "outputId": "33cec3bb-88fc-4e01-b168-13e033c7583d"
      },
      "source": [
        "dir('str')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['__add__',\n",
              " '__class__',\n",
              " '__contains__',\n",
              " '__delattr__',\n",
              " '__dir__',\n",
              " '__doc__',\n",
              " '__eq__',\n",
              " '__format__',\n",
              " '__ge__',\n",
              " '__getattribute__',\n",
              " '__getitem__',\n",
              " '__getnewargs__',\n",
              " '__gt__',\n",
              " '__hash__',\n",
              " '__init__',\n",
              " '__init_subclass__',\n",
              " '__iter__',\n",
              " '__le__',\n",
              " '__len__',\n",
              " '__lt__',\n",
              " '__mod__',\n",
              " '__mul__',\n",
              " '__ne__',\n",
              " '__new__',\n",
              " '__reduce__',\n",
              " '__reduce_ex__',\n",
              " '__repr__',\n",
              " '__rmod__',\n",
              " '__rmul__',\n",
              " '__setattr__',\n",
              " '__sizeof__',\n",
              " '__str__',\n",
              " '__subclasshook__',\n",
              " 'capitalize',\n",
              " 'casefold',\n",
              " 'center',\n",
              " 'count',\n",
              " 'encode',\n",
              " 'endswith',\n",
              " 'expandtabs',\n",
              " 'find',\n",
              " 'format',\n",
              " 'format_map',\n",
              " 'index',\n",
              " 'isalnum',\n",
              " 'isalpha',\n",
              " 'isascii',\n",
              " 'isdecimal',\n",
              " 'isdigit',\n",
              " 'isidentifier',\n",
              " 'islower',\n",
              " 'isnumeric',\n",
              " 'isprintable',\n",
              " 'isspace',\n",
              " 'istitle',\n",
              " 'isupper',\n",
              " 'join',\n",
              " 'ljust',\n",
              " 'lower',\n",
              " 'lstrip',\n",
              " 'maketrans',\n",
              " 'partition',\n",
              " 'replace',\n",
              " 'rfind',\n",
              " 'rindex',\n",
              " 'rjust',\n",
              " 'rpartition',\n",
              " 'rsplit',\n",
              " 'rstrip',\n",
              " 'split',\n",
              " 'splitlines',\n",
              " 'startswith',\n",
              " 'strip',\n",
              " 'swapcase',\n",
              " 'title',\n",
              " 'translate',\n",
              " 'upper',\n",
              " 'zfill']"
            ]
          },
          "metadata": {},
          "execution_count": 20
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "s9bki9wwRndz"
      },
      "source": [
        "Another important operator is the in operator which makes it possible to use all sequence type in for loops - recall that this was one of the motivations to study sequence types. Notice that the syntax is identical to the syntax in case of strings.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "XgKjfk2l1j9c",
        "outputId": "4074084f-de00-4d49-9e38-a057181f8878"
      },
      "source": [
        "print(1 in [1,2,3,4])\n",
        "print(5 in [1,2,3,4])\n",
        "print(1 in (1,2,3,4))\n",
        "print(5 in (1,2,3,4))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "True\n",
            "False\n",
            "True\n",
            "False\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3Z9PKqGKSJfp"
      },
      "source": [
        "And thus we can use lists or tuples in for loops.  Notice that the actual elements inside the list are important if we are explicitly using them.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Bq3PHW9m14kh",
        "outputId": "608a8c1a-3772-45ae-9729-bcff69a048b2"
      },
      "source": [
        "for i in [1,7,13,'hello']:\n",
        "  print('Meow') # we are not explicitly using the elements in the list"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Meow\n",
            "Meow\n",
            "Meow\n",
            "Meow\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 235
        },
        "id": "yoMQYNi72PbW",
        "outputId": "0606435a-9e84-407f-a3df-7d19a478204e"
      },
      "source": [
        "for i in [1,7,13,'hello']:\n",
        "  print(i**2) # we are explicitly using the elements in the list - and we cannot take the square of a string"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1\n",
            "49\n",
            "169\n"
          ]
        },
        {
          "output_type": "error",
          "ename": "TypeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-28-30b8b4be8cf8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m7\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m13\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'hello'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m   \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for ** or pow(): 'str' and 'int'"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4tQ96u3q2Y4n",
        "outputId": "2eae42a4-cca5-4a60-b183-0cab4e1ba3e9"
      },
      "source": [
        "for i in [1,7,13,'hello']:\n",
        "  print(i*2) # we are explicitly using the elements of the list, but the operations are valid for integers and strings"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "2\n",
            "14\n",
            "26\n",
            "hellohello\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "2XQ2_xNBXDHm"
      },
      "source": [
        "Finally, we can also convert one datatype into another using the intuitive command."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-LRGmgpu2iji",
        "outputId": "a622e613-f58b-4a8f-9973-aba1bfcd32e1"
      },
      "source": [
        "s = 'apple'\n",
        "l = list(s)\n",
        "t = tuple(s)\n",
        "print(l)\n",
        "print(t)\n",
        "l = list(range(10))\n",
        "print(l)\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "['a', 'p', 'p', 'l', 'e']\n",
            "('a', 'p', 'p', 'l', 'e')\n",
            "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aWXMCnvn3K06"
      },
      "source": [
        "**Exercise 1:** Write a program that does the following.\n",
        "\n",
        "1. Ask \"How long should be the list?\".  Store the value as n\n",
        "2. Ask for n inputs and store this information as a list of n strings.  Print the list\n",
        "3. Remove all strings of length > 10.  Print the new list.\n",
        "\n",
        "**Exercise 2:** Write a program that:\n",
        "1. asks for a string s and an integer i < the length of the string.\n",
        "2. removes the i-th element of s and prints the rest.\n",
        "\n",
        "Do the program in two ways: using a for loop, using list methods.  list.pop(k) removes the k-th element in the list."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_bEV0jf0XRWx"
      },
      "source": [
        "While trying to solve Exercise 1, an unexpected error (or bug) creeped in.  The following code was a natural attempt, but it was not doing the job correctly.  Let us try to understand the issue.\n",
        "\n",
        "Suppose the initial list was ['Happy Birthday', 'Congratulations', 'Procrastination', 'Divakaran Divakaran', 'Programming'].  After the first iteration, the list becomes ['Congratulations', 'Procrastination', 'Divakaran Divakaran', 'Programming'] as len('Happy Birthday') > 10.  But, in the next iteration, we will only look at the second element in the list, namely, 'Procrastination' - even though len('Congratulations') > 10, the string does not get removed.  And the same mistake repeats.  Run the code to see the effect in action."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mccLOeJmAzy_",
        "outputId": "f6c5756a-25eb-43b6-b805-31b293344afd"
      },
      "source": [
        "n = int(input('How long should the list be? '))\n",
        "l = []\n",
        "\n",
        "# create a list of n strings\n",
        "for i in range(n):\n",
        "  st = input('Give me a string: ')\n",
        "  l.append(st)\n",
        "print(l)\n",
        "\n",
        "# remove elements whose length is greater than 10\n",
        "for i in l:\n",
        "  if len(i) > 10:\n",
        "    l.remove(i)\n",
        "  print(l) # helps us understand how the program is working - such techniques are useful in finding error (bug) in code.\n",
        "# does not work\n",
        "print(l)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "How long should the list be? 5\n",
            "Give me a string: Happy Birthday\n",
            "Give me a string: Congratulations\n",
            "Give me a string: Procrastination\n",
            "Give me a string: Divakaran Divakaran\n",
            "Give me a string: Programming\n",
            "['Happy Birthday', 'Congratulations', 'Procrastination', 'Divakaran Divakaran', 'Programming']\n",
            "['Congratulations', 'Procrastination', 'Divakaran Divakaran', 'Programming']\n",
            "['Congratulations', 'Divakaran Divakaran', 'Programming']\n",
            "['Congratulations', 'Divakaran Divakaran']\n",
            "['Congratulations', 'Divakaran Divakaran']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "j--D_gCiZvtX"
      },
      "source": [
        "The next major idea/concept in programming is that of a function.  Just like loops, they help us reuse existing code.  In fact, you have already encountered some examples of functions - say the length function.  In Scratch the analogous idea would be 'Make a block'.  The code for defining a function looks as follows:\n",
        "\n",
        "```\n",
        "def name_of_your_function(parameters)\n",
        "```\n",
        "1. def tells the computer that you are going to define a function.  \n",
        "2. then you specify the name of the function - it is usually better to keep the name short yet descriptive.  \n",
        "3. And finally in paranthesis you describe the parameters or input for the function.  \n",
        "\n",
        "Let us look at some examples"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "u1V-qA5fCpMA",
        "outputId": "156feeba-daad-45b7-cc92-4bc226276e79"
      },
      "source": [
        "def gm2(a,b): # a function that computes the geometric mean of two numbers.  This function has two input parameters\n",
        "  return (a*b)**(1/2) # return describes the output of this function\n",
        "\n",
        "print(gm2(5,8))\n",
        "print(gm2(4,9))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "6.324555320336759\n",
            "6.0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VsvgTxA0EUOj",
        "outputId": "7db83bb9-c3c7-47ac-c309-322b0cc456e7"
      },
      "source": [
        "def say_hello(name):\n",
        "  print('Hello', name) # notice that this function does not have an output\n",
        "\n",
        "say_hello('divakaran')\n",
        "\n",
        "n = input('What is your name?')\n",
        "say_hello(n)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Hello divakaran\n",
            "What is your name?Neha\n",
            "Hello Neha\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RP3A3jPpdbjb"
      },
      "source": [
        "We can also specify a default parameter for a function.  For example, recall that the default input for pop was -1.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "qEr84hqmFPE3",
        "outputId": "5aa55fb3-bc75-424f-b94e-20d9eb0670bc"
      },
      "source": [
        "def say_hello(name = 'divakaran'): # the default input is 'divakaran'\n",
        "  print('Hello', name)\n",
        "\n",
        "say_hello()\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Hello divakaran\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "WhFOnE7oFNNF",
        "outputId": "8d3dc777-418e-4daf-be4a-cea3f705e1cc"
      },
      "source": [
        "def gm2(c, a = 1, b = 1): # the default values for a and b are 1.  In general, you first list the variables that do not have a default parameter and then the ones that have a default parameter\n",
        "  return (a*b*c)**(1/3)\n",
        "\n",
        "print(gm2(8))\n",
        "print(gm2(9))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "2.0\n",
            "2.080083823051904\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "sOzoK0J7Hn_Z"
      },
      "source": [
        "def do_nothing(a,b,c):\n",
        "  return [a,b,c] # you can also return multiple values as a list, tuple or comma separated variables"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "p834ofOlITBg",
        "outputId": "5dae2a74-6f7c-4edf-d2be-ef808f2daa2a"
      },
      "source": [
        "def gm(a_list): # a program that takes a list of numbers and returns its geometric mean\n",
        "  x = 1\n",
        "  n = len(a_list)\n",
        "  for i in a_list:\n",
        "    x = x*i\n",
        "  return x**(1/n)\n",
        "\n",
        "gm([4,13,27,3])\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "8.05604884284795"
            ]
          },
          "metadata": {},
          "execution_count": 55
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_ZPd_-MrJv9t"
      },
      "source": [
        "**Exercise 3:** Write a function that takes a number and returns the factorial\n",
        "\n",
        "**Exercise 4:** Write a function that takes a number and returns all primes less than n\n",
        "\n",
        "**Exercise 5:** Write a function that computes the wage.  The wage is given according to the following rules:\n",
        "  a. upto 20 hours, you are paid 50 rs per hour\n",
        "  b. from 20 to 40 hours you are paid 100 rs per hour\n",
        "  c. above 40 hours you are paid 1000 rs per hour"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "44jBB_oYrPu0"
      },
      "source": [
        "# Lecture 7"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IbjBt9QRMas8"
      },
      "source": [
        "In the last class, we saw we can reuse code using functions.  Some of you however were not so convinced with its usefulness.  Let me have another shot at it.  Recall that you have already used several functions like len, int, str, print, etc.  And the real power of functions arise from the fact that one can use functions written by others.  Several important functions are often packed in a library or a module.  Today we will look at some important Python modules/libraries: math, random, mathplotlib, and numpy."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "as2mZxbsMAE6",
        "outputId": "f91b3ae9-a665-4fd3-8ab3-fd1769ec4890"
      },
      "source": [
        "import math # to use a module, we first import it.\n",
        "\n",
        "print(math.ceil(4.576)) # inside the math module there is a function called ceil, we can call it using the command math.ceil\n",
        "print(math.pi) # somtimes there modules also contain important constants like pi or e\n",
        "print(math.e)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "5\n",
            "3.141592653589793\n",
            "2.718281828459045\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "cbBJmgKmjpVJ",
        "outputId": "d53aa201-b424-4577-8eea-4aad1382b8f3"
      },
      "source": [
        "from math import sin # it is possible to call specific functions from a package\n",
        "from math import pi\n",
        "\n",
        "output= sin(pi) # this means while calling the function, you do not have to type math.sin, we can just say sin\n",
        "print(output)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1.2246467991473532e-16\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-jivX2qUj7UI",
        "outputId": "b7d61b9c-8164-4080-a3f5-8cb58c087f18"
      },
      "source": [
        "from math import * # but of course it would be hard to individually call each function. This code calls all the functions\n",
        "\n",
        "print(cos(pi))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "-1.0\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4P3tp7OkkgK6",
        "outputId": "76686707-bf96-4289-b3ec-68bd1f11ccdf"
      },
      "source": [
        "import math as m # we can also use an alias while importing a module.  This is especially useful when the module has a big name\n",
        "\n",
        "print(m.sin(m.pi))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1.2246467991473532e-16\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qECfwzlJPweB"
      },
      "source": [
        "The next module of interest is random.  As the name suggests, it allows us to choose pseudo-random numbers, choose a random element from a sequence, shuffle a sequence of elements etc.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eg-Z72oxnfsz",
        "outputId": "2825044d-2a72-4a92-a5bf-879be59a576e"
      },
      "source": [
        "import random\n",
        "\n",
        "random.choice([1,2,3,4,5,6,7,8,9]) #choose a random element from the list"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "2"
            ]
          },
          "metadata": {},
          "execution_count": 26
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9TxjnitPyMKC",
        "outputId": "be7ac578-903f-4912-ed39-a242e108f09c"
      },
      "source": [
        "import random\n",
        "\n",
        "random.randint(1,3) #choose a random number between 1 and 3 - both numbers included"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "1"
            ]
          },
          "metadata": {},
          "execution_count": 40
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "JSpxzc93zZVL",
        "outputId": "b9d46a7b-7079-4074-fc5a-6dae439a6461"
      },
      "source": [
        "import random\n",
        "\n",
        "l = [1,2,3,4,5,6,7,8,9]\n",
        "\n",
        "random.shuffle(l) # shuffle the elements in the list.  This technique works only for mutable data types\n",
        "print(l)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[8, 9, 7, 4, 5, 6, 3, 2, 1]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "W0IviXtyzz9m",
        "outputId": "d0451087-f9fe-4b48-9d69-ecf043e934ce"
      },
      "source": [
        "import random\n",
        "\n",
        "l = (1,2,3,4,5,6,7,8,9)\n",
        "\n",
        "print(random.sample(l,len(l))) # for immutable data types like a tuple, we can use this code"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 4, 7, 6, 9, 2, 8, 5, 3]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "N79lUQBVQvE9"
      },
      "source": [
        "**Exercise:** Use the above python modules to do the following:\n",
        "\n",
        "1. Write a program that asks for a number and prints its factorial\n",
        "2. Write a function that asks for a list of numbers and prints the average value in the list.\n",
        "3. Write a function that takes two integers and prints its greatest common divisor."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PS0InoxbRpbe"
      },
      "source": [
        "The next module of importance is the plotting module mathplotlib.pyplot.  It helps us plot the graph of functions.  As the module has a big name, using an alias is extremely useful - typically, we use the alias plt.  \n",
        "\n",
        "The most important function in this module is the plot function.  This function takes two lists x and y as inputs.  Given these lists\n",
        "1. It marks points of the form (x[i],y[i])\n",
        "2. Draws a line connecting (x[i],y[i]) with (x[i+1],y[i+1])"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "cyWnvDPo0vOv",
        "outputId": "110a61f4-d111-4556-cea3-b26eeff38a0b"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "#create two lists\n",
        "x = [1,2,3,4,5]\n",
        "y = [5,4,3,2,1]\n",
        "\n",
        "plt.plot(x,y) # plot all points of the form (x[i],y[i]).  And draws a line segment connecting (x[i],y[i]) and (x[i+1],y[i+1])\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9LYsUXqww2nK"
      },
      "source": [
        "How would we draw the graph of f(x) = x^2?  Let us first create a list of points at which we will evluate the functions.  Then corresponging to this list x, we create another list y such that y[i] = f(x[i]).  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "tVikqyai1bub",
        "outputId": "7d738918-2a7e-4cfb-ab4a-86bbdea4d6ec"
      },
      "source": [
        "l1 = [1,2,3,4,5,6,7,8]\n",
        "\n",
        "l2 = []\n",
        "\n",
        "for i in l1:\n",
        "  l2.append(i**2)\n",
        "\n",
        "print(l2)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 4, 9, 16, 25, 36, 49, 64]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Zye8Q_tJxZeT"
      },
      "source": [
        "The same list can also be obtained more easily using list comprehension method shown below."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 468
        },
        "id": "kbihxkNM2SIh",
        "outputId": "f717e3cd-4631-4ed5-a4f0-b7d459c649e7"
      },
      "source": [
        "l1 = [1,2,3,4,5,6,7,8,9]\n",
        "\n",
        "l2 = [i**2 for i in l1]\n",
        "print(l2)\n",
        "\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "plt.plot(l1,l2)\n",
        "plt.show()\n",
        "plt.plot(l1, l2, 'bo--')\n",
        "plt.show()\n",
        "plt.plot(l1,'r+')\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 4, 9, 16, 25, 36, 49, 64, 81]\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "i2cxAe3Exk4D"
      },
      "source": [
        "This would also be extremely useful if we want to convert a list of strings to a list of integers - and other similar conversions.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aX4KMbhe2lCA",
        "outputId": "3f9e00ad-ae1e-4790-8445-92bd12bca0ef"
      },
      "source": [
        "l = ['1','2','3','4','5']\n",
        "\n",
        "l2 = [int(i) for i in l]\n",
        "print(l2)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[1, 2, 3, 4, 5]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "zJbsL9y3yGhA"
      },
      "source": [
        "Let us now be more ambitious and try to plot the graph of sin.  To do these we pick some values in between 0 and 2 pi and evaluate the value of sin at these points.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 300
        },
        "id": "YZGqrsMZ206O",
        "outputId": "9ae96429-45ab-4aec-9e3f-dd19b839fd16"
      },
      "source": [
        "from math import *\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [0,pi/4,pi/2,3*pi/4,pi,5*pi/4,6*pi/4,7*pi/4,2*pi]\n",
        "y = [sin(i) for i in x]\n",
        "print(y)\n",
        "\n",
        "plt.plot(x,y)\n",
        "plt.show"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[0.0, 0.7071067811865475, 1.0, 0.7071067811865476, 1.2246467991473532e-16, -0.7071067811865475, -1.0, -0.7071067811865477, -2.4492935982947064e-16]\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {},
          "execution_count": 73
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Q0YqLeCRyYGu"
      },
      "source": [
        "Notice that the graph is not as smooth as it should be - this is because we obtained the graph of the function using only the values of the function at 8 points.  If we increase the number of points, we get more and more accurate plots.  We can create a list of n points between a and b using the function linspace(a,b,n) in the numpy library.  Thus, we can get as accurate a plot as we want.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "F8mihNyX3zQF",
        "outputId": "7a92a6a7-f44c-4128-f621-dfd0030f9b1e"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = np.linspace(0,2*pi,50) #creates a list of 50 equally spaced points between 0 and 2 pi.  Try changing the number 50 to see how the plot varies.\n",
        "y = [sin(i) for i in x]\n",
        "\n",
        "plt.plot(x,y)\n",
        "plt.show\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {},
          "execution_count": 82
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "PjWkS_Dx5t4y",
        "outputId": "a2a00001-dd7d-45e9-9005-a1e1e54f55d9"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = np.linspace(0,5,5000000)\n",
        "y = [np.e**i for i in x]\n",
        "\n",
        "plt.plot(x,y)\n",
        "plt.show"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {},
          "execution_count": 90
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "18D4i-IcUNXN"
      },
      "source": [
        "One of you asked the question, \"can we draw a circle?\".  Now notice that the circle is not a graph of any function.  This is because, there are vertical lines that intersect the circle at two points.  In other words, for the same x, you have two values of y.  That is, we cannot define f(x) in an unambiguous way.  But, this package allows you to draw the graphs of more than one function in the same figure.  Further, notice that the upper semi-circle and the lower semi-circle are both graphs of functions.  More precisely, the upper semi-circle is the graph of the function $f:[-1,1]\\to \\mathbb{R}$ defined as $f(x) = \\sqrt{1-x^2}$.  Similarly, the lower semi-circel the the graph of the function $g:[-1,1]\\to \\mathbb{R}$ defined as $g(x) = -\\sqrt{1-x^2}$.  Thus, if we draw the graphs of these two functions in the same picture, we would get the circle.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "NRy4qFFE6kAb",
        "outputId": "b97bae60-b553-41a1-e5ce-e995a497ac46"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = np.linspace(-1,1,100)\n",
        "y = [(1 - i**2)**(1/2) for i in x] # list of all f(i) where i is in x\n",
        "y2 = [-(1 - i**2)**(1/2) for i in x] # list of all g(i) where i is in x\n",
        "\n",
        "plt.plot(x,y) # plot the graph of f\n",
        "plt.plot(x,y2) # plot the graph of g\n",
        "plt.show"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {},
          "execution_count": 2
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1jMlaUjAW1Oq"
      },
      "source": [
        "You can do more than plot graphs of functions in mathplotlib.pyplot.  In fact, the package does not care about functions at all.  It just takes two lists x and y and follows the simple algorithm:\n",
        "1. It marks points of the form (x[i],y[i])\n",
        "2. Draws a line connecting (x[i],y[i]) with (x[i+1],y[i+1])\n",
        "\n",
        "Notice that as $\\sin^2(\\theta) + \\cos^2(\\theta) = 1$ and $\\sin(\\theta)$ takes all values between $-1$ and $1$.  Thus, the set $\\{(\\sin(\\theta),\\cos(\\theta)): \\theta \\in [0,2\\pi]\\}$ will be the unit circle centred at origin.  If x is a list of values of $\\sin(\\theta)$ and y is a list of corresponding values of $\\cos(\\theta)$, plot(x,y) gives us a polygon whose vertices lie on the circle.  As the number of points increase, the polygon will look closer and closer to a circle.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "L6lGrkAh7gig",
        "outputId": "1be94777-fcbb-4af5-9bd8-165efe2a3b29"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "l = np.linspace(0,2*pi,100) # creates a list of 100 equidistant points between 0 and 2 pi\n",
        "x = [np.sin(i) for i in l] # creates a list of sin(i) where i is in l\n",
        "y = [np.cos(i) for i in l] #creates a list of cos(i) where i is in l\n",
        "\n",
        "plt.plot(x,y)\n",
        "plt.show"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {},
          "execution_count": 93
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "d9Kq3OvGkCpq"
      },
      "source": [
        "**Exercise:** Draw an ellipse with major axis 5 and minor axis 3.\n",
        "\n",
        "**Exercise:** Plot the graphs of cos, log, and 1/x.  \n",
        "\n",
        "**Exercise:** Explore what happens when you try to plot the graph of tan.  Why do we see a weird behaviour?"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TD4M-qgqF1a1"
      },
      "source": [
        "# Lecture 8"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TuqnCI50uZuP"
      },
      "source": [
        "In the last class, after we wrote the following piece of code, there was a question: \"How can we make sure that the output is not in scientific notation?\" and I could not answer it.  We will start today's class by looking at mulitple ways of doing this."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VXBDyO6SF4L3",
        "outputId": "847d49ba-3c72-44b0-9d9e-56827f8f5af4"
      },
      "source": [
        "from math import sin # it is possible to call specific functions from a package\n",
        "from math import pi\n",
        "\n",
        "output= sin(pi) # this means while calling the function, you do not have to type math.sin, we can just say sin\n",
        "print(output)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1.2246467991473532e-16\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mCIc7EMiuvdx"
      },
      "source": [
        "The easiest way is to use some built in features of the print function."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "l79ALB54zbBG",
        "outputId": "50b8769d-469d-4dc3-f399-6c4cd26f372e"
      },
      "source": [
        "print('%f' % output) # When you add %f in a string, it tells the computer that there is a float at this place.  The value of the float is specified outside the string."
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0.000000\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bCHgc8dN0AyE",
        "outputId": "13ef570d-07c4-42e6-deda-6747fa2188cb"
      },
      "source": [
        "print('%.20f' % output) #you can also specify the precision .20 specifies that we are asking for 20 decimal places.  try changing the number 20"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0.00000000000000012246\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "EGwdkqf-3y4f"
      },
      "source": [
        "Of course we can use this to do more interesting things.  In the code below, %s specifies that there is a string at this place and %i specifies that there is an integer at this place.  The values are sequentially listed outside the string.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "wg5Txtf50PJc",
        "outputId": "a3e9c56e-be81-4fdb-d204-6eb5f1d9d5ad"
      },
      "source": [
        "print('My name is %s and I have been working in %s for the past %i years' % ('Divakaran','APU',2))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "My name is Divakaran and I have been working in APU for the past 2 years\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dtL45BKH4JM1"
      },
      "source": [
        "The more modern approach is to use the string method called format.  In this code, a float is specified using {:f}.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ghoDm7w20Aup",
        "outputId": "d8f08b1d-531b-4b25-aeff-35b3bd29d3ab"
      },
      "source": [
        "print('{:f}'.format(output))"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0.000000\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4Hh8xRyJ1NVl",
        "outputId": "f7ea7479-9ab2-453a-93ad-5b571c8c1981"
      },
      "source": [
        "print('{:.20f}'.format(output)) # once agina you can specify the precision"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0.00000000000000012246\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mzX6VpEK1MAE",
        "outputId": "5d6c97fe-91ac-4a70-9362-b1684ff622c9"
      },
      "source": [
        "print('My name is {} and I have been working in {} for the past {} years'.format('Divakaran', 'APU',2)) # and do more interesting stuff"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "My name is Divakaran and I have been working in APU for the past 2 years\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kE91oHcl4mbs"
      },
      "source": [
        "A problem with the above methods is that, you need to manually specify the level of precision.  We can overcome this problem by using the function format_float_positional from numpy.  Let us see how to use it.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "P7TNaxBc1sLn",
        "outputId": "dad35057-bc97-4469-c911-ff3a70008ea4"
      },
      "source": [
        "import numpy\n",
        "\n",
        "print(numpy.format_float_positional(output))\n",
        "print(numpy.format_float_positional(1/4)) # notice that it automatically determines that this float requires only two decimal points for a complete description"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0.00000000000000012246467991473532\n",
            "0.25\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5PMUnM3Q5Gep"
      },
      "source": [
        "Another question I couldn't answer last class was, how to change the colour of the plot.  This was important because the upper semi-circle and lower semi-circle where coming in different colours.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "iQci8rru2cxs",
        "outputId": "57080522-b82e-42b3-e446-db6d303e61a3"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = np.linspace(-1,1,100)\n",
        "y = [(1 - i**2)**(1/2) for i in x]\n",
        "y2 = [-(1 - i**2)**(1/2) for i in x]\n",
        "\n",
        "plt.plot(x,y)\n",
        "plt.plot(x,y2)\n",
        "plt.show"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {},
          "execution_count": 12
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "zNumbLE55Swg"
      },
      "source": [
        "We can change the colour by adding another parameter in the plot function."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 337
        },
        "id": "F3La66vq2gJr",
        "outputId": "b4ed0e16-0f21-41dd-ee9b-74379fab7ed6"
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = np.linspace(-1,1,100)\n",
        "y = [(1 - i**2)**(1/2) for i in x]\n",
        "y2 = [-(1 - i**2)**(1/2) for i in x]\n",
        "plt.figure(figsize = (5,5))\n",
        "\n",
        "plt.plot(x,y,color = 'blue') # we are specifying the colour\n",
        "plt.plot(x,y2,color = 'blue')\n",
        "plt.show"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {},
          "execution_count": 54
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 360x360 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QzX2uSVD7c0B"
      },
      "source": [
        "Now that the doubts from previous class is cleared, I want to discuss two datatypes.  With this, we can say we have completed a very basic introduction to Python.  We will go into further depths after the mid-term break.  \n",
        "\n",
        "The two types I want to discuss are:\n",
        "1. Sets\n",
        "2. Dictionary\n",
        "\n",
        "You would have probably encountered sets in high school mathematics and dictionary is ofcourse famialr to everyone.  In high school, a set is described as a well-defined collection of objects.  More precisely, given a set and an object, we should be able to say clearly if the object belongs to the set or not.  Notice that the order of the elements is not really important.  Moreover, the same number is not listed more than once.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RV_qUnbVFrMO",
        "outputId": "b7e7877a-1e2a-4f6d-f26c-2a1cd9ecb376"
      },
      "source": [
        "x = {1,2,3} # we can manually define a set using the flower brackets\n",
        "print(x)\n",
        "print({1,2,3} == {2,1,3}) # we can also check that the order of elements is irrelevant\n",
        "s = set(range(100)) # but the more common way to build a set is by converting a list or range or tuple into a set\n",
        "print(s)\n",
        "l = [True,5,6,'n',6, True] # however notice that when we do this, the repeatitions are lost\n",
        "print(l)\n",
        "s2 = set(l)\n",
        "print(s2)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{1, 2, 3}\n",
            "True\n",
            "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99}\n",
            "[True, 5, 6, 'n', 6, True]\n",
            "{True, 5, 6, 'n'}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "G3aGGc3h9BeZ"
      },
      "source": [
        "Another thing to notice is that, a set can contain only immutables.  If you try to create a list with a mutable, we get the error \"unhashable type\".  Hashing is a method to efficiently find an element in a set (and some other similar dataypes).  Notice that as the elements are not indexed, the task is harder in a set."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 180
        },
        "id": "YohPxqdT9B7S",
        "outputId": "29aa27c7-479d-451d-af5a-fb0089f510cd"
      },
      "source": [
        "s3 = {1,2,3,[1,2,3]}\n",
        "print(s3)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "error",
          "ename": "TypeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-2-48c0436ef479>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ms3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0oJOyYfL93C1"
      },
      "source": [
        "A set is also a mutable there for we cannot create a set of the form $\\{1,2,\\{1,2\\}\\}$ in Python.  The most important methods that can be used to modify a set are the update and remove methods.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XRe9F3jC93hz"
      },
      "source": [
        "s3.update({'omkar','divakaran'})\n",
        "print(s3)\n",
        "\n",
        "s3.remove('divakaran')\n",
        "print(s3)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FkRx6uoH9ree"
      },
      "source": [
        "We can however create an immutable set using the command frozenset.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NPf09b6i9FMS"
      },
      "source": [
        "s3 = {1,2,3,frozenset([1,2,3]),(1,2),frozenset({'a','b','a'})}\n",
        "print(s3)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aRpc31F1AjyZ"
      },
      "source": [
        "Typically, in a dictionary, we have words and their meanings.  Thus, we can think of a dictionary as pairs of words and meanings.  In Python, a dictionary is implemented as a set of word-meaning pairs.  However, they are not called word-meaning pairs.  In Python they are called key-value pairs, however.  The key-value pairs are separated by a colon and the pairs are separated by comma.  In a dictionary, the keys cannot be immutable, but the values can be anything.   "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9uTgBrbpJ0Hx",
        "outputId": "c7cefcf1-da08-4c21-c235-fbd982104d8d"
      },
      "source": [
        "capital = {'India':'Delhi', 'USA':'Washington'}\n",
        "print(capital)\n",
        "print(type(capital))\n",
        "\n",
        "capital.update({'Pakistan':'Islamabad','Afghanistan':\"Kabul\", 'Nepal':'Kathmandu'}) # you can update a dictionary using the update method - just like sets.\n",
        "print(capital)\n",
        "\n",
        "capital.pop('Pakistan') # you can remove elements using the pop method.\n",
        "print(capital)\n",
        "\n",
        "print(capital['India']) # you can get the value corresponding to a key using this code\n",
        "\n",
        "print(capital.keys()) # all keys in the dictionary\n",
        "print(capital.values()) # all values in the dictionary"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'India': 'Delhi', 'USA': 'Washington'}\n",
            "<class 'dict'>\n",
            "{'India': 'Delhi', 'USA': 'Washington', 'Pakistan': 'Islamabad', 'Afghanistan': 'Kabul', 'Nepal': 'Kathmandu'}\n",
            "{'India': 'Delhi', 'USA': 'Washington', 'Afghanistan': 'Kabul', 'Nepal': 'Kathmandu'}\n",
            "Delhi\n",
            "dict_keys(['India', 'USA', 'Afghanistan', 'Nepal'])\n",
            "dict_values(['Delhi', 'Washington', 'Kabul', 'Kathmandu'])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xpR0e5l9Nn-l"
      },
      "source": [
        "**Exercise:** Create a large dictionary of country-capital pairs (at least 20 pairs).  Write a program that asks for a country name and prints the capital name if it is in the dictionary.  Else, print \"Sorry, the capital of this country is not in our database\".\n",
        "\n",
        "**Exercise:** Given the above dictionary of country-capital pairs, write a program that prints \"The capital of _____ is _____\" for all country-capital pairs in the dictionary.  \n",
        "\n",
        "**Exercise:** If a country is not in the collection of keys in our dictionary, ask the user if he/she knows the capital of the country.  If yes, ask him for the capital and add the country-captial pair to the dictionary.   "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "o5EP4iYcgFpw"
      },
      "source": [
        "# Assignment 2"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "MCGBdF0rSWtz"
      },
      "source": [
        "**Question 1:** Write a function that takes as input three numbers a, b, and c  and returns the solutions of $ax^2 + bx + c = 0$ as a list.  In case of repeated roots, the same answer should be repeated twice in the list.   "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BqBdoyBaTwrb"
      },
      "source": [
        "Explain the logic behind the code here:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mZohgbQBSWJG"
      },
      "source": [
        "# use comments to explain the code"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "b8qLggOgT-AV"
      },
      "source": [
        "**Question 2:** Write a function that takes two sets as input and returns the intersection of the two sets (a set containing all elements common to the two sets).  "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mwWb5Af4UwD8"
      },
      "source": [
        "Explain the logic behing the code here:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Z2IqoG6MUyXr"
      },
      "source": [
        "# use comments to explain the code"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6gEZs0etU1eB"
      },
      "source": [
        "**Question 3:** I have purposefully made some errors in the code below.  I want you to fix all the errors and comment the errors I have made.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-If9S4kGGQUW",
        "outputId": "b2c854c0-3165-4777-d152-52489cd93f8f"
      },
      "source": [
        "capital = {'India':'Delhi', 'USA':'Washington', 'Pakistan':'Islamabad','Afghanistan':\"Kabul\", 'Nepal':'Kathmandu', 'Japan':'Tokyo', 'UK': 'London', 'France:'Paris', 'Srilanka'='Colombo', 'Korea' : 'Seoul',}\n",
        "\n",
        "country = input('Name a country and we would say its capital:')\n",
        "if country in capital.keys:\n",
        "  print(capital[country])\n",
        "else\n",
        "  print(Sorry, the capital of this country is not in our database)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Name a country and we would say its capital:asd\n",
            "Sorry, the capital of this country is not in our database\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vIfdqEabDjF6"
      },
      "source": [
        "**Question 4:**  One of the important skills is to learn how to learn things on your own with the help of the internet.  You have seen examples of this process in class.  In this problem, you would do the same yourself.  Thus, unlike other problems, you are allowed (actually, expected) to use online resources.  I would explicitly state whenever this is the case.  \n",
        "\n",
        "Use the internet to understand the various modules and functions used in the following code.  Write in your own words about these modules and functions.\n",
        "\n",
        "You can use comments or a separate textbox to provide the explanations.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uiPopIh7DW5h"
      },
      "source": [
        "import sys\n",
        "\n",
        "a_list = list()\n",
        "a_tuple = tuple()\n",
        "\n",
        "a_list = [1,2,3,4,5]\n",
        "a_tuple = (1,2,3,4,5)\n",
        "\n",
        "print(sys.getsizeof(a_list))\n",
        "print(sys.getsizeof(a_tuple))"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OEWE8D2xDYu6"
      },
      "source": [
        "import sys, platform\n",
        "import time\n",
        "\n",
        "print(platform.python_version())\n",
        "\n",
        "start_time = time.time()\n",
        "b_list = list(range(10000000))\n",
        "end_time = time.time()\n",
        "print(\"Instantiation time for LIST:\", end_time - start_time)\n",
        "\n",
        "start_time = time.time()\n",
        "b_tuple = tuple(range(10000000))\n",
        "end_time = time.time()\n",
        "print(\"Instantiation time for TUPLE:\", end_time - start_time)\n",
        "\n",
        "start_time = time.time()\n",
        "for item in b_list:\n",
        "  aa = b_list[20000]\n",
        "end_time = time.time()\n",
        "print(\"Lookup time for LIST: \", end_time - start_time)\n",
        "\n",
        "start_time = time.time()\n",
        "for item in b_tuple:\n",
        "  aa = b_tuple[20000]\n",
        "end_time = time.time()\n",
        "print(\"Lookup time for TUPLE: \", end_time - start_time)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "NPpnRyMLlDf6"
      },
      "source": [
        "# Lecture 9"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "C_cTBEuVigc0"
      },
      "source": [
        "In the last class, we summarised what we had learnt up till the mid-semester break.  After the revision, you worked on the following exercise.\n",
        "\n",
        "**Exercise:** Search the internet and learn how to use matplotlib to draw a histogram.  \n",
        "\n",
        "Today, I want to illustrate, how you should go about it - with special focus on some good practices.  \n",
        "\n",
        "Of course, we start with a google search.  But, there are a couple of things you need to note:\n",
        "1. Typically the first few searches are advertisements - and not necessarily the best source.  \n",
        "2. Copying the code from one of the websites is not learning.  \n",
        "\n",
        "Given below is a code from one of the first few websites. When you blindly copy the code, you might feel you have completed the task, but it is possible you did not learn anything.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "bxIElifK64QY",
        "outputId": "7b37273f-a115-4e48-916c-7522208ffacf"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [0,1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91,100]\n",
        "\n",
        "print(type(x))\n",
        "\n",
        "plt.hist(x)\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'list'>\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0-zHwz62ngua"
      },
      "source": [
        "The most basic level of understanding the above code is - we use the hist function to plot a histogram.  The next level is to understand the parameters taken by the function.  This is often not explained in many sites.  Often the best place to find this information is the module website.  The first search result from this website was https://matplotlib.org/stable/gallery/statistics/hist.html.  Unfortunately, the page only had some examples.  But, the functions used and their documentation was referenced at the end.  Thus we could go to the webpage for [matplotlib.pyplot.hist](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.hist.html#matplotlib.pyplot.hist) and have a deeper look at the function.\n",
        "\n",
        "```\n",
        "matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)\n",
        "```\n",
        "Notice that although the function has several parameters, all except the first have a default value.  So, we can plot a histogram without using any other parameter.  Further, all parameters are described.  You will see the following description for x:\n",
        "\n",
        "> x: (n,) array or sequence of (n,) arrays\n",
        "Input values, this takes either a single array or a sequence of arrays which are not required to be of the same length.\n",
        "\n",
        "What is an array?  In the code we used a list!  What happens if we use a tuple?  What happens if we use a set?  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "OaNfqMfIk_1w",
        "outputId": "39058f7f-6bc4-479d-839f-f11c6332bfa1"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = (0,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91,100)\n",
        "\n",
        "print(type(x))\n",
        "\n",
        "plt.hist(x) #notice that the code runs even if x is a tuple\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'tuple'>\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 643
        },
        "id": "CQopQ_jkq2ch",
        "outputId": "51e91a39-f7dd-43ea-9506-7df09b718d5d"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = {0,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91,100}\n",
        "\n",
        "print(type(x))\n",
        "\n",
        "plt.hist(x) #the code does not work if we use a set.  An array has to be ordered.  Matches with dictionary meaning: an ordered series or arrangement.\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'set'>\n"
          ]
        },
        {
          "output_type": "error",
          "ename": "TypeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-3-cb9180aba90c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     14\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#the code does not work if we use a set.  An array has to be ordered.  Matches with dictionary meaning: an ordered series or arrangement.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     17\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, data, **kwargs)\u001b[0m\n\u001b[1;32m   2608\u001b[0m         \u001b[0malign\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0malign\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morientation\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morientation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlog\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2609\u001b[0m         color=color, label=label, stacked=stacked, **({\"data\": data}\n\u001b[0;32m-> 2610\u001b[0;31m         if data is not None else {}), **kwargs)\n\u001b[0m\u001b[1;32m   2611\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2612\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1563\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1564\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1565\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1566\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1567\u001b[0m         \u001b[0mbound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(self, x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)\u001b[0m\n\u001b[1;32m   6628\u001b[0m                     \u001b[0;31m# python's min/max ignore nan,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   6629\u001b[0m                     \u001b[0;31m# np.minnan returns nan for all nan input\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6630\u001b[0;31m                     \u001b[0mxmin\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxmin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnanmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   6631\u001b[0m                     \u001b[0mxmax\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxmax\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnanmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   6632\u001b[0m             \u001b[0;31m# make sure we have seen at least one non-nan and finite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mTypeError\u001b[0m: '<' not supported between instances of 'set' and 'float'"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qaa8ekoyrYTH"
      },
      "source": [
        "Moreover, although a single parameter is enough to plot a histogram, many of you used another parameter called 'bin' when you wrote the code.  It is important that when you use a parameter, you understand its function.  Once again, reading the description helps.  You can also try to learn by seeing how the plot changes as you try various options.  In fact, even if you read the description, it is good to play with the code.  This solidifies your understanding.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "cbZHWe_mvmxd",
        "outputId": "6c6908e9-4bbd-4b5f-dbdb-f3cf92560c96"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [0,1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91,100]\n",
        "\n",
        "plt.hist(x, bins = 10) #bins can be an integer\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAQWUlEQVR4nO3df4xlZX3H8fen/LAVSQGZIiyMS1tCg6asZLJgpAZFKSxEbGNaNqZiSzNqMNXGxKw10db+g2nV1mKgW9iCxq7GHygRRCiaoImiu3SB5ZesdC27ruwiCKImuvrtH/dsMg73srP33NlxH96v5Oae85znnuc5+8x+5swz55xJVSFJatdvLHUHJEmLy6CXpMYZ9JLUOINekhpn0EtS4w5e6g4Mc/TRR9fy5cuXuhuSdMDYuHHjo1U1NWzbr2XQL1++nA0bNix1NyTpgJHku6O2OXUjSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mN+7W8M1b7ZvmaG5ak3a2Xnb8k7UraN57RS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxe32oWZJ1wAXAzqp6cVf2SeDkrsoRwA+rasWQz24FfgT8AthdVTMT6rckaYEW8vTKa4DLgY/uKaiqP9+znOQDwBPP8PlXVNWj43ZQktTPXoO+qm5LsnzYtiQB/gx45WS7JUmalL5z9H8EPFJVD47YXsDNSTYmmX2mHSWZTbIhyYZdu3b17JYkaY++Qb8aWP8M28+sqtOA84BLk7x8VMWqWltVM1U1MzU11bNbkqQ9xg76JAcDfwp8clSdqtreve8ErgNWjtueJGk8fc7oXwXcX1Xbhm1McliSw/csA+cAm3u0J0kaw16DPsl64OvAyUm2Jbmk23QR86ZtkhyX5MZu9Rjga0nuBL4J3FBVN02u65KkhVjIVTerR5S/cUjZ94BV3fJDwKk9+ydJ6sk7YyWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNW4hfzN2XZKdSTbPKfv7JNuTbOpeq0Z89twkDyTZkmTNJDsuSVqYhZzRXwOcO6T8Q1W1onvdOH9jkoOAjwDnAacAq5Oc0qezkqR9t9egr6rbgMfG2PdKYEtVPVRVPwM+AVw4xn4kST0c3OOzb03yBmAD8I6qenze9mXAw3PWtwGnj9pZkllgFmB6erpHt7S/LF9zw5K1vfWy85esbelAM+4vY68Afg9YAewAPtC3I1W1tqpmqmpmamqq7+4kSZ2xgr6qHqmqX1TVL4H/YDBNM9924IQ568d3ZZKk/WisoE9y7JzVPwE2D6n2LeCkJCcmORS4CLh+nPYkSePb6xx9kvXAWcDRSbYB7wXOSrICKGAr8Kau7nHAVVW1qqp2J3kr8CXgIGBdVd2zKEchSRppr0FfVauHFF89ou73gFVz1m8EnnbppSRp//HOWElqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4/b6h0e0MMvX3LDUXXhWWap/762Xnb8k7Up9eEYvSY3ba9AnWZdkZ5LNc8r+Kcn9Se5Kcl2SI0Z8dmuSu5NsSrJhkh2XJC3MQs7orwHOnVd2C/DiqvpD4NvAu57h86+oqhVVNTNeFyVJfew16KvqNuCxeWU3V9XubvUbwPGL0DdJ0gRMYo7+r4AvjthWwM1JNiaZnUBbkqR91OuqmyTvBnYDHx9R5cyq2p7kd4Bbktzf/YQwbF+zwCzA9PR0n25JkuYY+4w+yRuBC4DXV1UNq1NV27v3ncB1wMpR+6uqtVU1U1UzU1NT43ZLkjTPWEGf5FzgncBrquonI+ocluTwPcvAOcDmYXUlSYtnIZdXrge+DpycZFuSS4DLgcMZTMdsSnJlV/e4JDd2Hz0G+FqSO4FvAjdU1U2LchSSpJH2OkdfVauHFF89ou73gFXd8kPAqb16J0nqzTtjJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYtKOiTrEuyM8nmOWVHJbklyYPd+5EjPntxV+fBJBdPquOSpIVZ6Bn9NcC588rWALdW1UnArd36r0hyFPBe4HRgJfDeUd8QJEmLY0FBX1W3AY/NK74QuLZbvhZ47ZCP/jFwS1U9VlWPA7fw9G8YkqRFdHCPzx5TVTu65e8Dxwypswx4eM76tq7saZLMArMA09PTY3dq+Zobxv6stDdL9fW19bLzl6RdtWEiv4ytqgKq5z7WVtVMVc1MTU1NoluSJPoF/SNJjgXo3ncOqbMdOGHO+vFdmSRpP+kT9NcDe66iuRj4/JA6XwLOSXJk90vYc7oySdJ+stDLK9cDXwdOTrItySXAZcCrkzwIvKpbJ8lMkqsAquox4B+Bb3Wv93VlkqT9ZEG/jK2q1SM2nT2k7gbgr+esrwPWjdU7SVJv3hkrSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxYwd9kpOTbJrzejLJ2+fVOSvJE3PqvKd/lyVJ+2JBfzN2mKp6AFgBkOQgYDtw3ZCqX62qC8ZtR5LUz6Smbs4GvlNV353Q/iRJEzKpoL8IWD9i20uT3Jnki0leNGoHSWaTbEiyYdeuXRPqliSpd9AnORR4DfCpIZvvAF5YVacC/wZ8btR+qmptVc1U1czU1FTfbkmSOpM4oz8PuKOqHpm/oaqerKqnuuUbgUOSHD2BNiVJCzSJoF/NiGmbJC9Ikm55ZdfeDybQpiRpgca+6gYgyWHAq4E3zSl7M0BVXQm8DnhLkt3AT4GLqqr6tClJ2je9gr6qfgw8f17ZlXOWLwcu79OGJKmfXkEvaf9YvuaGJWt762XnL1nbmgwfgSBJjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY3zzlhJz2ip7sr1jtzJ8Yxekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TG9Q76JFuT3J1kU5INQ7YnyYeTbElyV5LT+rYpSVq4Sd0w9YqqenTEtvOAk7rX6cAV3bskaT/YH1M3FwIfrYFvAEckOXY/tCtJYjJn9AXcnKSAf6+qtfO2LwMenrO+rSvbMbdSkllgFmB6enoC3ZJ0IPMPok/OJM7oz6yq0xhM0Vya5OXj7KSq1lbVTFXNTE1NTaBbkiSYQNBX1fbufSdwHbByXpXtwAlz1o/vyiRJ+0GvoE9yWJLD9ywD5wCb51W7HnhDd/XNGcATVbUDSdJ+0XeO/hjguiR79vVfVXVTkjcDVNWVwI3AKmAL8BPgL3u2KUnaB72CvqoeAk4dUn7lnOUCLu3TjiRpfN4ZK0mNM+glqXEGvSQ1zqCXpMYZ9JLUuEk91EySmrFUj19YrEcveEYvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMaNHfRJTkjylST3JrknyduG1DkryRNJNnWv9/TrriRpX/V5euVu4B1VdUeSw4GNSW6pqnvn1ftqVV3Qox1JUg9jn9FX1Y6quqNb/hFwH7BsUh2TJE3GRObokywHXgLcPmTzS5PcmeSLSV40ifYkSQvX+w+PJHke8Bng7VX15LzNdwAvrKqnkqwCPgecNGI/s8AswPT0dN9uSZI6vc7okxzCIOQ/XlWfnb+9qp6sqqe65RuBQ5IcPWxfVbW2qmaqamZqaqpPtyRJc/S56ibA1cB9VfXBEXVe0NUjycquvR+M26Ykad/1mbp5GfAXwN1JNnVlfwdMA1TVlcDrgLck2Q38FLioqqpHm5KkfTR20FfV14Dspc7lwOXjtiFJ6s87YyWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TG9Qr6JOcmeSDJliRrhmx/TpJPdttvT7K8T3uSpH03dtAnOQj4CHAecAqwOskp86pdAjxeVb8PfAh4/7jtSZLG0+eMfiWwpaoeqqqfAZ8ALpxX50Lg2m7508DZSdKjTUnSPjq4x2eXAQ/PWd8GnD6qTlXtTvIE8Hzg0fk7SzILzHarTyV5YMx+HT1s/43zmNv3bDteeBYec97f65hfOGpDn6CfqKpaC6ztu58kG6pqZgJdOmB4zO17th0veMyT1GfqZjtwwpz147uyoXWSHAz8NvCDHm1KkvZRn6D/FnBSkhOTHApcBFw/r871wMXd8uuAL1dV9WhTkrSPxp666ebc3wp8CTgIWFdV9yR5H7Chqq4HrgY+lmQL8BiDbwaLrff0zwHIY27fs+14wWOemHiCLUlt885YSWqcQS9JjWsm6Pf2OIYWJDkhyVeS3JvkniRv68qPSnJLkge79yOXuq+TluSgJP+T5Avd+ondYzW2dI/ZOHSp+zhJSY5I8ukk9ye5L8lLWx/nJH/bfV1vTrI+yW+2Ns5J1iXZmWTznLKh45qBD3fHfleS08Ztt4mgX+DjGFqwG3hHVZ0CnAFc2h3nGuDWqjoJuLVbb83bgPvmrL8f+FD3eI3HGTxuoyX/CtxUVX8AnMrg2Jsd5yTLgL8BZqrqxQwu8LiI9sb5GuDceWWjxvU84KTuNQtcMW6jTQQ9C3scwwGvqnZU1R3d8o8Y/Odfxq8+auJa4LVL08PFkeR44Hzgqm49wCsZPFYDGjvmJL8NvJzBVWtU1c+q6oc0Ps4MrgL8re6em+cCO2hsnKvqNgZXIM41alwvBD5aA98Ajkhy7DjtthL0wx7HsGyJ+rJfdE8CfQlwO3BMVe3oNn0fOGaJurVY/gV4J/DLbv35wA+rane33tp4nwjsAv6zm666KslhNDzOVbUd+Gfg/xgE/BPARtoe5z1GjevEcq2VoH9WSfI84DPA26vqybnbuhvSmrlmNskFwM6q2rjUfdmPDgZOA66oqpcAP2beNE2D43wkgzPYE4HjgMN4+hRH8xZrXFsJ+oU8jqEJSQ5hEPIfr6rPdsWP7PmRrnvfuVT9WwQvA16TZCuDKblXMpi/PqL7ER/aG+9twLaqur1b/zSD4G95nF8F/G9V7aqqnwOfZTD2LY/zHqPGdWK51krQL+RxDAe8bm76auC+qvrgnE1zHzVxMfD5/d23xVJV76qq46tqOYNx/XJVvR74CoPHakB7x/x94OEkJ3dFZwP30vA4M5iyOSPJc7uv8z3H3Ow4zzFqXK8H3tBdfXMG8MScKZ59U1VNvIBVwLeB7wDvXur+LNIxnsngx7q7gE3daxWDOetbgQeB/waOWuq+LtLxnwV8oVv+XeCbwBbgU8Bzlrp/Ez7WFcCGbqw/BxzZ+jgD/wDcD2wGPgY8p7VxBtYz+B3Ezxn85HbJqHEFwuBqwu8AdzO4Immsdn0EgiQ1rpWpG0nSCAa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJatz/A937UYIk+DEaAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OiWtLNcBwCNH"
      },
      "source": [
        "If it is an integer, it divides the range into equal sized partition.  Notice that the smallest value here is 0 and largest value is 100.  If bins = 10, we have 10 bins - 0-10,10-20,20-30,30-40,40-50,50-60,60-70,70-80,80-90,90-100.  Try changing the number and see the difference.  \n",
        "\n",
        "Bins can also be a list or a tuple.  The following code has the same effect as the code above.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "_krkFCDtxS_w",
        "outputId": "4ade7e81-6bd1-4fb3-ef10-9651bfd1524b"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [0,1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91,100]\n",
        "\n",
        "plt.hist(x, bins = [0,10,20,30,40,50,60,70,80,90,100]) #bins can be a list or a tuple.\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "71W_Z4YbxtkW"
      },
      "source": [
        "When bins is a list, two consecutive terms in the list determines a bin.  In this case the bins need not have equal width.  Once again try changing the list.  Also, notice the difference in the two methods if we slightly change the data.  When bins is an integer, by default the range is between the smallest and largest values.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "jXzVgBtbENpQ",
        "outputId": "23608d14-fffe-4b68-9157-a408a4492f1d"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91]\n",
        "\n",
        "plt.hist(x, bins = 10) # we are splitting the interval [1,91] into 10 bins. So, the bin width is 9.\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "DvM1pP1xyGNN",
        "outputId": "6e8b2a56-287f-484e-cd1b-2572acd89d77"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91]\n",
        "\n",
        "plt.hist(x, bins = [0,10,20,30,40,50,60,70,80,90,100])\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "nm7F5Wu9zEJG"
      },
      "source": [
        "If needed, we can explicitly specify the range using another parameter.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "v4gNFo78FJBJ",
        "outputId": "348b16ef-8e65-459c-9b91-1c6262d3f375"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91]\n",
        "\n",
        "print(type(x))\n",
        "\n",
        "plt.hist(x, bins=10, range = (0,100))\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'list'>\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')"
      ],
      "metadata": {
        "id": "bw421lGAoZAe"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xayWxAPjzTjQ"
      },
      "source": [
        "Or we can use the range function to create the list.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        },
        "id": "963m4d7DzYc-",
        "outputId": "9290f920-053c-47ce-c83b-31fdfcdf408a"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91]\n",
        "\n",
        "plt.hist(x, list(range(0,101,10)))\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QLK_xDtKzx4U"
      },
      "source": [
        "Another concern many shared is that the above picture does not exactly look like the histograms they are used to - as all the bars are smushed togehter.  This problem can be solved in two ways - using two different parameters.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "crxL7FPSHDF7",
        "outputId": "9774d76e-7f1e-4085-c996-548fc7bcba5b"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91]\n",
        "\n",
        "plt.hist(x, bins=10, range = (0,100), rwidth= 0.9, color = 'red') #rwidth is the relative width of the bars as a fraction of the bin width\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'list'>\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAQY0lEQVR4nO3df4xlZX3H8fenLNiKRECmCAvr0pbQoClIJitGavAXhS0R25gWYiq2JKMGU21MDNZEW/tPTau2FgPZAgWNXY0/UKKIUDRBE0Vn6QLLL1kpyq7ILqIgaqKr3/5xz7bDcC87c8+dGfaZ9yu5uec857nnec6e2c+cee75kapCktSu31jpDkiSlpZBL0mNM+glqXEGvSQ1zqCXpMatWekODHPEEUfU+vXrV7obkrTf2LJly8NVNTVs2dMy6NevX8/s7OxKd0OS9htJvjtqmUM3ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUuKfllbFapGR52/NhNdJ+xSN6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDVunzc1S3IFcDawq6pe0JV9Ajihq3Io8OOqOnnIZ+8HfgL8CthTVdMT6rckaYEWcvfKK4GLgY/sLaiqP987neT9wKNP8fmXVdXD43ZQktTPPoO+qm5Ksn7YsiQB/gx4+WS7JUmalL5j9H8IPFRV945YXsD1SbYkmXmqFSWZSTKbZHb37t09uyVJ2qtv0J8HbH6K5adV1SnAWcCFSV46qmJVbaqq6aqanpqa6tktSdJeYwd9kjXAnwKfGFWnqnZ277uAq4EN47YnSRpPnyP6VwJ3V9WOYQuTHJzkkL3TwBnAth7tSZLGsM+gT7IZ+DpwQpIdSS7oFp3LvGGbJEcnubabPRL4WpJbgW8CX6iq6ybXdUnSQizkrJvzRpS/YUjZ94GN3fR9wEk9+ydJ6skrYyWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNW4hz4y9IsmuJNvmlP1dkp1JtnavjSM+e2aSe5JsT3LRJDsuSVqYhRzRXwmcOaT8g1V1cve6dv7CJAcAHwbOAk4EzktyYp/OSpIWb59BX1U3AY+Mse4NwPaquq+qfgF8HDhnjPVIknroM0b/liS3dUM7hw1ZvhZ4YM78jq5sqCQzSWaTzO7evbtHt7SskuV9SVq0cYP+EuB3gZOBB4H39+1IVW2qqumqmp6amuq7OklSZ6ygr6qHqupXVfVr4N8ZDNPMtxM4ds78MV2ZJGkZjRX0SY6aM/snwLYh1b4FHJ/kuCQHAecC14zTniRpfGv2VSHJZuB04IgkO4D3AKcnORko4H7gjV3do4HLqmpjVe1J8hbgS8ABwBVVdceSbIUkaaRU1Ur34Ummp6drdnZ2pbux/1juLynn/sysZNuS/k+SLVU1PWyZV8ZKUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhq3zydMaRGW8yEcPoDDf29pgTyil6TG7TPok1yRZFeSbXPK/inJ3UluS3J1kkNHfPb+JLcn2ZrEZwNK0gpYyBH9lcCZ88puAF5QVX8AfBt451N8/mVVdfKoZxlKkpbWPoO+qm4CHplXdn1V7elmvwEcswR9kyRNwCTG6P8K+OKIZQVcn2RLkpkJtCVJWqReZ90keRewB/jYiCqnVdXOJL8N3JDk7u4vhGHrmgFmANatW9enW5KkOcY+ok/yBuBs4HVVw889q6qd3fsu4Gpgw6j1VdWmqpququmpqalxuyVJmmesoE9yJvAO4NVV9bMRdQ5OcsjeaeAMYNuwupKkpbOQ0ys3A18HTkiyI8kFwMXAIQyGY7YmubSre3SSa7uPHgl8LcmtwDeBL1TVdUuyFZKkkfY5Rl9V5w0pvnxE3e8DG7vp+4CTevVOktSbV8ZKUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjVtQ0Ce5IsmuJNvmlB2e5IYk93bvh4347PldnXuTnD+pjkuSFmahR/RXAmfOK7sIuLGqjgdu7OafIMnhwHuAFwEbgPeM+oUgSVoaCwr6qroJeGRe8TnAVd30VcBrhnz0j4AbquqRqvoRcANP/oUhSVpCa3p89siqerCb/gFw5JA6a4EH5szv6MqeJMkMMAOwbt26Ht2SlkGyfG1VLV9batJEvoytqgJ6/TRW1aaqmq6q6ampqUl0S5JEv6B/KMlRAN37riF1dgLHzpk/piuTJC2TPkF/DbD3LJrzgc8NqfMl4Iwkh3Vfwp7RlUmSlslCT6/cDHwdOCHJjiQXAP8IvCrJvcAru3mSTCe5DKCqHgH+AfhW93pvVyZJWiapp+EXPdPT0zU7O7vS3Vi8lfqCbjnbXa1tz/9/4pexeppJsqWqpoct88pYSWqcQS9JjTPoJalxBr0kNc6gl6TG9bkFwtOTZ0NI0hN4RC9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxo0d9ElOSLJ1zuuxJG+bV+f0JI/OqfPu/l2WJC3G2HevrKp7gJMBkhwA7ASuHlL1q1V19rjtSJL6mdTQzSuA71TVdye0PknShEwq6M8FNo9Y9uIktyb5YpLnj1pBkpkks0lmd+/ePaFuSZJ6B32Sg4BXA58csvgW4HlVdRLwb8BnR62nqjZV1XRVTU9NTfXtliSpM4kj+rOAW6rqofkLquqxqnq8m74WODDJERNoU5K0QJMI+vMYMWyT5LnJ4Nl+STZ07f1wAm1Kkhao1zNjkxwMvAp445yyNwFU1aXAa4E3J9kD/Bw4t8oHrUrScuoV9FX1U+A588ounTN9MXBxnzYkSf30CnpJy2wwErp8/AO8Cd4CQZIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGueVsZIWxqty91se0UtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1LjeQZ/k/iS3J9maZHbI8iT5UJLtSW5LckrfNiVJCzepC6ZeVlUPj1h2FnB893oRcEn3LklaBssxdHMO8JEa+AZwaJKjlqFdSRKTCfoCrk+yJcnMkOVrgQfmzO/oyp4gyUyS2SSzu3fvnkC3JDUjWb5XgyYR9KdV1SkMhmguTPLScVZSVZuqarqqpqempibQLUkSTCDoq2pn974LuBrYMK/KTuDYOfPHdGWSpGXQK+iTHJzkkL3TwBnAtnnVrgFe3519cyrwaFU92KddSdLC9T3r5kjg6gzGtdYA/1lV1yV5E0BVXQpcC2wEtgM/A/6yZ5uSpEXoFfRVdR9w0pDyS+dMF3Bhn3YkSePzylhJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuP6PmFKkto1eHre8qlaktV6RC9JjRs76JMcm+QrSe5MckeStw6pc3qSR5Ns7V7v7tddSdJi9Rm62QO8vapuSXIIsCXJDVV157x6X62qs3u0I0nqYewj+qp6sKpu6aZ/AtwFrJ1UxyRJkzGRMfok64EXAjcPWfziJLcm+WKS50+iPUnSwvU+6ybJs4BPA2+rqsfmLb4FeF5VPZ5kI/BZ4PgR65kBZgDWrVvXt1uSpE6vI/okBzII+Y9V1WfmL6+qx6rq8W76WuDAJEcMW1dVbaqq6aqanpqa6tMtSdIcfc66CXA5cFdVfWBEned29UiyoWvvh+O2KUlavD5DNy8B/gK4PcnWruxvgXUAVXUp8FrgzUn2AD8Hzq1aoisCJElDjR30VfU14CkvG6uqi4GLx21DktSfV8ZKUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjesV9EnOTHJPku1JLhqy/BlJPtEtvznJ+j7tSZIWb+ygT3IA8GHgLOBE4LwkJ86rdgHwo6r6PeCDwPvGbU+SNJ4+R/QbgO1VdV9V/QL4OHDOvDrnAFd1058CXpEkPdqUJC3Smh6fXQs8MGd+B/CiUXWqak+SR4HnAA/PX1mSGWCmm308yT2L7M8Rw9a7pFbyd9b/t70at3s1bjOszu1ejdsM423380Yt6BP0E1VVm4BN434+yWxVTU+wS/uF1bjdq3GbYXVu92rcZpj8dvcZutkJHDtn/piubGidJGuAZwM/7NGmJGmR+gT9t4DjkxyX5CDgXOCaeXWuAc7vpl8LfLmqqkebkqRFGnvophtzfwvwJeAA4IqquiPJe4HZqroGuBz4aJLtwCMMfhkslbGHffZzq3G7V+M2w+rc7tW4zTDh7Y4H2JLUNq+MlaTGGfSS1Lgmgn5ft2JoQZJjk3wlyZ1J7kjy1q788CQ3JLm3ez9spfs6aUkOSPLfST7fzR/X3VJje3eLjYNWuo+TluTQJJ9KcneSu5K8eJXs67/pfr63Jdmc5Ddb299JrkiyK8m2OWVD920GPtRt+21JThmnzf0+6Bd4K4YW7AHeXlUnAqcCF3bbeRFwY1UdD9zYzbfmrcBdc+bfB3ywu7XGjxjcaqM1/wpcV1W/D5zEYPub3tdJ1gJ/DUxX1QsYnORxLu3t7yuBM+eVjdq3ZwHHd68Z4JJxGtzvg56F3Yphv1dVD1bVLd30Txj8x1/LE28zcRXwmpXp4dJIcgzwx8Bl3XyAlzO4pQa0uc3PBl7K4Kw1quoXVfVjGt/XnTXAb3XX3TwTeJDG9ndV3cTgLMS5Ru3bc4CP1MA3gEOTHLXYNlsI+mG3Yli7Qn1ZFt1dQF8I3AwcWVUPdot+ABy5Qt1aKv8CvAP4dTf/HODHVbWnm29xfx8H7Ab+oxuyuizJwTS+r6tqJ/DPwPcYBPyjwBba398wet9OJN9aCPpVJcmzgE8Db6uqx+Yu6y5Ga+Z82SRnA7uqastK92WZrQFOAS6pqhcCP2XeME1r+xqgG5c+h8EvuqOBg3nyEEfzlmLfthD0C7kVQxOSHMgg5D9WVZ/pih/a+6dc975rpfq3BF4CvDrJ/QyG5F7OYOz60O5Pe2hzf+8AdlTVzd38pxgEf8v7GuCVwP9U1e6q+iXwGQY/A63vbxi9byeSby0E/UJuxbDf68amLwfuqqoPzFk09zYT5wOfW+6+LZWqemdVHVNV6xns1y9X1euArzC4pQY0ts0AVfUD4IEkJ3RFrwDupOF93fkecGqSZ3Y/73u3u+n93Rm1b68BXt+dfXMq8OicIZ6Fq6r9/gVsBL4NfAd410r3Z4m28TQGf87dBmztXhsZjFnfCNwL/Bdw+Er3dYm2/3Tg89307wDfBLYDnwSesdL9W4LtPRmY7fb3Z4HDVsO+Bv4euBvYBnwUeEZr+xvYzOA7iF8y+OvtglH7FgiDswq/A9zO4IykRbfpLRAkqXEtDN1Ikp6CQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIa978RrlCKzxfHIgAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "LBunN_4YHQaJ",
        "outputId": "23c952d5-eecb-42de-baa0-dddfe1a58af1"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "x = [1,1,2,3,3,5,7,8,9,10,\n",
        "     10,11,11,13,13,15,16,17,18,18,\n",
        "     18,19,20,21,21,23,24,24,25,25,\n",
        "     25,25,26,26,26,27,27,27,27,27,\n",
        "     29,30,30,31,33,34,34,34,35,36,\n",
        "     36,37,37,38,38,39,40,41,41,42,\n",
        "     43,44,45,45,46,47,48,48,49,50,\n",
        "     51,52,53,54,55,55,56,57,58,60,\n",
        "     61,63,64,65,66,68,70,71,72,74,\n",
        "     75,77,81,83,84,87,89,90,90,91]\n",
        "\n",
        "print(type(x))\n",
        "\n",
        "plt.hist(x, bins=10, range = (0,100), ec = 'black') #or you can add edge colour\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "<class 'list'>\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QFRF8vXc0ZK0"
      },
      "source": [
        "In addition, you can use more parameters like color, label, orientation etc to change the look and feel.  "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0DwbIVk75Ydm"
      },
      "source": [
        "We covered the basics of programming and python by mid-term break.  Now, Python is vast and there is a lot to learn.  But, it is impossible to discuss all that in this course.  So, my hope is you would learn how-to-learn on your own.  Eventually, I want you to be able to do the following:\n",
        "\n",
        "1. Given a problem, break it into easier parts.\n",
        "2. Write an algorithm to tackle the easier parts\n",
        "3. Convert the algorithm into code by finding relevant modules and functions\n",
        "4. If the exact task cannot be done using existing modules, find an alternate path.  \n",
        "\n",
        "In this course, you would probably not encounter scenario 4.  But, I want to give enough experience in the first three problems.  We already spent some time learning how to use the internet to learn about different modules and functions.  In the next few lectures we would explore how to break complex problems into easier parts and write algorithms.  There is a particular technique that is a mixture of both these processes.  \n",
        "\n",
        "Recall how we wrote the code to find the factorial.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mDWT7e9YQdXs",
        "outputId": "7f7ee6f5-d51b-44e8-a7ac-404e4834724e"
      },
      "source": [
        "n = int(input('Enter a number'))\n",
        "\n",
        "fact = 1\n",
        "for i in range(1,n+1):\n",
        "  fact = fact*i\n",
        "\n",
        "print(fact)\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Enter a number5\n",
            "120\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IXtbS1WS8lNz"
      },
      "source": [
        "But notice that n! = (n-1)!*n.  Thus, if we know how to calculate (n-1)! we can calculate n!.  Further, (n-1)! = (n-2)!*(n-1).  So, it is enough to find the value of (n-2)!.  Notice that we are systematically reducing the complexity of the problem, further we are using the same technique to reduce complexity at each stage.  The repeated application of the same technique again and again is called recursion.  And, computer understands this pretty well.  This logic can be converted into a code as given below.    "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "YOmZvUQAQ8vE",
        "outputId": "df7b9ae3-7ef3-4dba-8bd7-3b72c19b85b2"
      },
      "source": [
        "def my_factorial(n):\n",
        "  if n==1:\n",
        "    return 1\n",
        "  else:\n",
        "    return my_factorial(n-1)*n\n",
        "\n",
        "print(my_factorial(5))\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "120\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DvVjEvLj-e-O"
      },
      "source": [
        "Notice that in the above code we specify the value of 1!.  Otherwise, the computer will complain that it tried long enough, but could not come up with a valid answer.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 391
        },
        "id": "boxUFetZ-0vL",
        "outputId": "d758c9a7-1acc-46ba-f855-71b16aa5b17b"
      },
      "source": [
        "def my_factorial(n):\n",
        "    return my_factorial(n-1)*n\n",
        "\n",
        "print(my_factorial(5))\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "error",
          "ename": "RecursionError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mRecursionError\u001b[0m                            Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-15-21b7be756fb5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m<ipython-input-15-21b7be756fb5>\u001b[0m in \u001b[0;36mmy_factorial\u001b[0;34m(n)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "... last 1 frames repeated, from the frame below ...\n",
            "\u001b[0;32m<ipython-input-15-21b7be756fb5>\u001b[0m in \u001b[0;36mmy_factorial\u001b[0;34m(n)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PPuulSYm-7P8"
      },
      "source": [
        "In fact, you will get the same error if you use very large numbers.  This is because, by default, computer will repeat a certain technique only a fixed number of times.  In situations where we need to go \"deeper\" we can force the computer to do so - but we have to change the code accordingly and we wont go into it.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 391
        },
        "id": "iEGHHEdR-6q-",
        "outputId": "f6cc44ac-b86b-40eb-9c72-b6a38c44aecf"
      },
      "source": [
        "def my_factorial(n):\n",
        "  if n==1:\n",
        "    return 1\n",
        "  else:\n",
        "    return my_factorial(n-1)*n\n",
        "\n",
        "print(my_factorial(1000))\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "error",
          "ename": "RecursionError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mRecursionError\u001b[0m                            Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-16-1d32a07cf6d7>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;32m<ipython-input-16-1d32a07cf6d7>\u001b[0m in \u001b[0;36mmy_factorial\u001b[0;34m(n)\u001b[0m\n\u001b[1;32m      3\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m   \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      7\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "... last 1 frames repeated, from the frame below ...\n",
            "\u001b[0;32m<ipython-input-16-1d32a07cf6d7>\u001b[0m in \u001b[0;36mmy_factorial\u001b[0;34m(n)\u001b[0m\n\u001b[1;32m      3\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m   \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      7\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmy_factorial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded in comparison"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6vxHuejXAaRZ"
      },
      "source": [
        "Another familar example of this idea would be the Fibonacci sequence.  The n-th element in the Fibonacci sequence is the sum of the (n-1)th and (n-2)th elements.  So, if we specify the value of any two elements, all subsequent elements can be determined using this simple principle.  And typically, the value of the first and second element are fixed to be 0 and 1."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-oB-AKoyVjN2",
        "outputId": "b1cfe1af-d0b1-45d1-abef-aead4495f6ff"
      },
      "source": [
        "def my_fibonacci(n):\n",
        "  if n == 1:\n",
        "    return 0 # the first element in the Fibonacci sequence is set to be 0\n",
        "  elif n == 2:\n",
        "    return 1 # the seconf element in the Fibonacci sequence is set to be 1\n",
        "  else:\n",
        "    return my_fibonacci(n-1) + my_fibonacci(n-2)\n",
        "\n",
        "print(my_fibonacci(5))\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "3\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8Qy-DkCRBE1m"
      },
      "source": [
        "Finally, the same idea is used to compute the greatest common divisor of two numbers.  The basic idea is that the gcd(a,b) = gcd(a,b-a), assuming the b>a.  Also, we know that gcd(a,a) = a.  Using just these two ideas, we can write a recursive function that computes the gcd of two numbers.    "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ZvZ1rUOUT2Cm",
        "outputId": "b27e79ef-1568-404c-b826-5963394c3e6c"
      },
      "source": [
        "def my_gcd(a,b):\n",
        "  if a == b:\n",
        "    return a\n",
        "  elif a > b:\n",
        "    return my_gcd(a-b,b)\n",
        "  elif a < b:\n",
        "    return my_gcd(a,b-a)\n",
        "\n",
        "print(my_gcd(30,36*7))\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "6\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M8SPLi9olMMs"
      },
      "source": [
        "# Assignment 3"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GKa8qmKgqMDu"
      },
      "source": [
        "Search the internet, learn about various packages/modules and solve the following questions.  As you are allowed to refer to the internet, marks will be assigned not for writing correct code, but for demonstrating an understanding of the modules, functions and datatypes used to solve the problem.  You are expected to emulate the process we did in class while discussing histograms in class.  "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Bfqr1TLCsJAm"
      },
      "source": [
        "**Question 1:** Create an interactive plot of the line y = mx + c with two sliders for m and c.  Please make sure of the following\n",
        "1. The x-axis and y-axis are plotted in black colour.\n",
        "2. The scale in the graph should not change as we change m and c"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "uYko5IccuWiR"
      },
      "source": [
        "**Question 2:** Write a function that takes a list of 16 numbers, converts this list into a numpy array of size (4,4) - which is like a 4x4 matrix - and finds its determinant.  "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "osoPHSYysLn2"
      },
      "source": [
        "**Question 3:** Draw a 3d plot of the function $f:\\mathbb{R}^2 \\to \\mathbb{R}$ defined as $f(x,y) = x^2 - y^2$."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V78TSx16lXzo"
      },
      "source": [
        "# Exam 1"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FLRGgfW_CuLE"
      },
      "source": [
        "**Question 1:** Write a function with three parameters - name, occupation, and nationality.  Given these parameters, it should print - 'name' is a/an 'nationality' and a/an 'occupation' by proffession.  To give an example, my name is Divakaran, my nationality is Indian, and my profession is teacher.  Given these inputs, the function should print \"Divakaran is a/an Indian and a/an teacher by profession\".  As most of us are Indians, assign 'Indian' as the default value for nationality.  \n",
        "\n",
        "**Bonus:** Choose a/an based on whether the first alphabet in nationality/occupation is a vowel or not.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "GiohkOmgAedV"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4P-uESHSfTfH"
      },
      "source": [
        "**Question 2:** Write a function that takes two parameters - a and b - and plots the graph of sin in this interval.  \n",
        "\n",
        "**Bonus:**  Add a third parameter - a string - that specifies the function we want to plot.  Assume that the function is one of the functions in-built in numpy.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NkNerCkg6h6i"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tWm93o3lEa2i"
      },
      "source": [
        "**Question 3:** Write a **recursive function** that takes two parameters - p and n - and returns the highest power of p that divides n.  Use this logic to write the code: If p divides n, the number of times p divides n is one more than the number of times p divides n/p\n",
        "\n",
        "**Bonus:** Do not use the % operator.  Instead write a recursive function remainder(a,b) that returns the remainder when we divide a by b.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bCBRvEeF6cgC",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "b0f535d7-e951-4f76-a8b2-c18e3e8f0dd5"
      },
      "source": [
        "def prime_factor_order(p,n):\n",
        "  if n%p == 0:\n",
        "    return 1 + prime_factor_order(p,n/p)\n",
        "  else:\n",
        "    return 0\n",
        "\n",
        "prime_factor_order(3,15)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "1"
            ]
          },
          "metadata": {},
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AYqeS4E5jIHB"
      },
      "source": [
        "**Question 4:** The sieve of Eratosthenes is an ancient algorithm to find all primes less than or equal to a given number.  The basic logic is to iteratively mark all multiples of primes (starting from 2) composite.  This algorithm can be described as below (from Wikipedia):\n",
        "\n",
        "```\n",
        "    input: an integer n > 1.\n",
        "    output: all prime numbers from 2 through n.\n",
        "\n",
        "    let A be a list of Boolean values, indexed by integers 2 to n,\n",
        "    initially all set to true.\n",
        "    \n",
        "    for i = 2, 3, 4, ..., not exceeding √n do\n",
        "        if A[i] is true\n",
        "            for j = 2i, 3i, 4i, 5i,..., not exceeding n do\n",
        "                A[j] := false\n",
        "\n",
        "    return the list of all i such that A[i] is true.\n",
        "```\n",
        "\n",
        "We can use the sieve and the function prime_factor_order, to write a function that takes a number and returns its prime factorisation.  The output will be a list containing tuples of the form (p,k) where p is a factor of n and k is the highest power of p that divides n.  \n",
        "\n",
        "Given below is a code that implemens the above logic, but it has many errors.  Explain the errors using comments and fix them.  \n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gvaEv4AE6VDb"
      },
      "source": [
        "def sieve(n):\n",
        "  sieve = [True for i in range(2,n)]\n",
        "\n",
        "  for all i in range(2,int(np.sqrt(n))+1):\n",
        "    if sieve[i-2] == True:\n",
        "      for j in [i*x for x in range(2,n) if i*x < n]:\n",
        "        seive[j-2] == False\n",
        "\n",
        "  return [x for x in range(2,n) if sieve[x-2]==True]\n",
        "\n",
        "\n",
        "def factorisation(n):\n",
        "\n",
        "  factors = []\n",
        "\n",
        "  for p in sieve(n):\n",
        "    if n%p == 0\n",
        "      factors.append((p,prime_factor_order(n,p)))\n",
        "\n",
        "  return factors\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yg3Z96UA7KcZ"
      },
      "source": [
        "# test your code is working"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WyZy3kuhlpL8"
      },
      "source": [
        "# Exam 1 - Makeup test"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "zvCNakPdyiac"
      },
      "source": [
        "**Question 1:** A standard way of formatting title (headline) is to use upper case for the first letter in each word and use lower case for all other letters.  For example: 'This Is A Headline'.  Write a program that asks for a short sentence and prints it in this format.\n",
        "\n",
        "*Note:* The program should do this even if the user inputs something like 'tHis Is a HeADline'."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VwmJnnPT9zDI"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8jLLgCALy4nO"
      },
      "source": [
        "**Question 2:** Given below is the list of numbers.  Write a program that constructs a list all 3 digit numbers in l such that the sum of its digits is equal to 5.\n",
        "\n",
        "*Note:* The code should work even if I modify the list"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gwhLfLqI74Fe"
      },
      "source": [
        "l = list(range(10000))"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mJM1k3B1y7V9"
      },
      "source": [
        "**Question 3:** Write a program that keeps asking for names till you type 'Done'.  Once you enter 'Done' it should print all the names entered in that session in the same line, but with '-' between two names.   "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UVJjkBkyy9gu"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lPnziVnty99P"
      },
      "source": [
        "**Question 4:** Given below is a dictionary marking the scores of various students in a class.  Write a program that takes this dictionary and creates a dictionary of their grades.  The grade boundaries are given below\n",
        "\n",
        "O: 95 $\\leq$ Marks $<$ 100\n",
        "\n",
        "A: 85 $\\leq$ Marks $<$ 95\n",
        "\n",
        "A-: 75 $\\leq$ Marks $<$ 85\n",
        "\n",
        "B: 65 $\\leq$ Marks $<$ 75\n",
        "\n",
        "C: 55 $\\leq$ Marks $<$ 65\n",
        "\n",
        "D: 45 $\\leq$ Marks $<$ 55\n",
        "\n",
        "E: 35 $\\leq$ Marks $<$ 45\n",
        "\n",
        "U: 0 $\\leq$ Marks $<$ 35\n",
        "\n",
        "*Note:* The code should work even if I add more elements or remove some elements."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LI92tDcm77II",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "c14a88c7-646c-4749-9a47-c4b4d4eb2891"
      },
      "source": [
        "marks = {'Anna':83, 'Michael':47, 'Mustafa':77, 'Raju':96, 'Roshan':33, 'Hassan':53, 'Deepa':87, 'Jayakrishnan':69, 'Akhil':98, 'Asha':83, 'Sanal':25, 'Joseph': 64, 'Karan': 72, 'Seeta': 59}"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "{'Anna': 'A-', 'Michael': 'D', 'Mustafa': 'A-', 'Raju': 'O', 'Roshan': 'U', 'Hassan': 'D', 'Deepa': 'A', 'Jayakrishnan': 'B', 'Akhil': 'O', 'Asha': 'A-', 'Sanal': 'U', 'Joseph': 'C', 'Karan': 'B', 'Seeta': 'C'}\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "iyDLelOwgyWc"
      },
      "source": [
        "# Practice problems"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g-MtpS_eEdYm"
      },
      "source": [
        "**Question 1:** Given below is an partial code to print the value associated to the key Naruto.  Complete the code."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UPWYs5_Ug85r"
      },
      "source": [
        "entertainment = {'Bahubali' : 'Telugu', 'Drishyam':'Hindi', 'Kabali': 'Tamil', 'Andhadhun':'Hindi', 'Naruto':'Japanese', 'Memoirs of Alhambra': 'Korean'}\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "2zPm8YC5F2Fb"
      },
      "source": [
        "**Question 2:** Write code in the box below that adds 5 new entries (of your choice) to the dictionary entertainment."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mASDRYh8g_XS"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TW2SkSqUGyd0"
      },
      "source": [
        "**Question 3:** Some of my Malayali friends protested that Drishyam is actually a Malayalam film!  Could you add some code in the box below to change the value corresponding to the key Drishyam to Malayalam."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4OC3xd8ChCR1"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ie3IWRJOJ1nY"
      },
      "source": [
        "**Question 4:**  Add code in the box below to print the names of all the movies in entertaiment (Note that entertainment was modified in question 2 and 3)."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qzrN3GM-hMcm"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HM9AnrLDLkVw"
      },
      "source": [
        "**Question 5:** Modify the above code to ensure that the language of the movie is added in brackets and put it in the box below.  For example, instead of printing Bahubali you should print Bahubali (Telugu)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M6taVWFChNDx"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "k0LDNKBCGGt1"
      },
      "source": [
        "**Question 6:** Given below is the code to find if the entered number is odd or even.  But, it is not working.  Find the error, explain it and fix it."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1eyuPr2thNo6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 249
        },
        "outputId": "948491eb-9bdc-4f63-d686-eb1a7d409f50"
      },
      "source": [
        "n = input('Please enter a number and I will tell you if it is odd or even: ')  # ask for the number\n",
        "\n",
        "if n%2 == 0:                                                                    # if the number is divisible by 2\n",
        "  print('It is even')\n",
        "else:\n",
        "  print('It is odd')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Please enter a number and I will tell you if it is odd or even: 5\n"
          ]
        },
        {
          "output_type": "error",
          "ename": "TypeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-1-fce5d0d43a48>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Please enter a number and I will tell you if it is odd or even: '\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# ask for the number\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m%\u001b[0m\u001b[0;36m2\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m                                                                    \u001b[0;31m# if the number is divisible by 2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      4\u001b[0m   \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'It is even'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mTypeError\u001b[0m: not all arguments converted during string formatting"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kX34F-p-HY9w"
      },
      "source": [
        "**Question 7:** Given below is another code to determine if the entered number is odd or even.  That too is however wrong.  Find the error, explain it and fix it.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SJRD96tZhOed"
      },
      "source": [
        "n = input('Please enter a number and I will tell you it is odd or even: ')      # ask for a number\n",
        "\n",
        "if n[-1] == 2 or n[-1] == 4 or n[-1] == 6 or n[-1] == 8 or n[-1] == 0:          # if the last digit is 0,2,4,6, or 8\n",
        "  print('It is even')\n",
        "else:\n",
        "  print('It is odd')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IjNxtQ8gJOAe"
      },
      "source": [
        "**Question 8:** There is a slightly different mistake in the code below.  Explain why the following code fails."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nfl70IPUhO-Q"
      },
      "source": [
        "n = int(input('Please enter a number and I will tell you it is odd or even: '))      # ask for a number\n",
        "\n",
        "if n[-1] == 2 or n[-1] == 4 or n[-1] == 6 or n[-1] == 8 or n[-1] == 0:          # if the last digit is 0,2,4,6, or 8\n",
        "  print('It is even')\n",
        "else:\n",
        "  print('It is odd')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "TO-ce7rEJwdK"
      },
      "source": [
        "**Question 9:** The code below is an attempt to print all elements in a set, but there is an error.  Find the error, explain it and fix it."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "11qESm2NhP1d"
      },
      "source": [
        "s = {'apple', 'orange', 1,2,3, True}\n",
        "\n",
        "for i in range(len(s)):\n",
        "  print(s[i])"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dWM5WJVnJydF"
      },
      "source": [
        "**Question 10:** As a suporting elective you have three options - A, B, and C.  But, your teacher told you that there is a good chance that the lecture times for B clashes with one of your core courses.  Among A and C, you prefer A.  But, if it is possible to take B, you would take it.  \n",
        "\n",
        "Can you convert this decision making process into code?"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "d9LJ6SL7hQVE"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "exI4ABmHXD_B"
      },
      "source": [
        "**Question 11:** Add code to create a new list m containing all numbers in l that are greater than 5 and less than 25."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wlSGXP0dXC4U"
      },
      "source": [
        "l = [1,5,7,3,6,8,9,12,16,3,5,2,1,9,0,15,44,23,47,87,12,34,57,123,21,37,3,7,14,2,47]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "z4XdbOKwX1X9"
      },
      "source": [
        "**Question 12:** Add code to remove all numbers in l that are greater than 5 and less than 25."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7Gp0yg2AX9jg"
      },
      "source": [
        "l = [1,5,7,3,6,8,9,12,16,3,5,2,1,9,0,15,44,23,47,87,12,34,57,123,21,37,3,7,14,2,47]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WMseGNNoX-jF"
      },
      "source": [
        "**Question 13:** Use a for loop to reverse the list l"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9NQnuE6yYMmw"
      },
      "source": [
        "l = [1,5,7,3,6,8,9,12,16,3,5,2,1,9,0,15,44,23,47,87,12,34,57,123,21,37,3,7,14,2,47]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Fg0f_EOgYN9o"
      },
      "source": [
        "**Question 14:** Add code to create a set of tuples - where the first entry in the tuple is the name and the second entry is their marks.  For example, (Anna, 83) would be one of the tuples"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DL_ey_4iYfjQ"
      },
      "source": [
        "marks = {'Anna':83, 'Michael':47, 'Mustafa':77, 'Raju':96, 'Roshan':33, 'Hassan':53, 'Deepa':87, 'Jayakrishnan':69, 'Akhil':98, 'Asha':83, 'Sanal':25, 'Joseph': 64, 'Karan': 72, 'Seeta': 59}"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_WDFGiyWY5qz"
      },
      "source": [
        "**Question 15:** Understand the code given below and explain it."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xHpzhuq4aKuK"
      },
      "source": [
        "def div_by_2(n):\n",
        "  s = str(n)\n",
        "  if s[-1] in '02468':\n",
        "    return True\n",
        "  else:\n",
        "    return False\n",
        "\n",
        "def div_by_3(n):\n",
        "  if n < 10:\n",
        "    if n == 3 or n == 6 or n == 9:\n",
        "      return True\n",
        "    else:\n",
        "      return False\n",
        "  else:\n",
        "    s = str(n)\n",
        "    x = 0\n",
        "    for i in range(len(s)):\n",
        "      x = x + int(s[i])\n",
        "    return div_by_3(x)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "i1RjL7aDcBcl"
      },
      "source": [
        "Answer: type your answer here"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qJLS1Js-Y7Tl"
      },
      "source": [
        "**Question 16:** Use the functions div_by_2 and/or div_by 3 to construct a function div_by_4."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tb0lWqBec_3m"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CT8etZoKY8oW"
      },
      "source": [
        "**Question 17:** Use the functions div_by_2 and/or div_by 3 to construct a function div_by_6."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1BWCciREdK8a"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "P_bb-2r_Y98X"
      },
      "source": [
        "**Question 18:**. Write a function that takes two numbers $a$ and $b$ as input and returns the value $2a + a^2b$."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uIxvqqRsXbXF"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4zFJiO3EY_Tw"
      },
      "source": [
        "**Question 19:** Write a function that takes two inputs - the first input is your age (an integer) and the second input answers whether the statement 'you have a license' is true or false.  In other words, the first entry is an integer and the second entry is a boolean.  Given the two inputs, the function should return True if you can drive and False otherwise."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zEl_O3O4Yltd"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LMw4BudRZA2u"
      },
      "source": [
        "**Question 20:** Given below is a code that checks if a given number is a prime or not.  Write a similar code, using a while loop instead of the for loop.\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "I1G1nU4Kbitl"
      },
      "source": [
        "n = int(input('Give me a number'))\n",
        "k = 2\n",
        "for i in range(n-2): # this acts as repeat n times\n",
        "  if n%k == 0:\n",
        "    print('The number is not prime')\n",
        "    break # takes you outside the for loop\n",
        "  k = k + 1\n",
        "else:\n",
        "  print('The number is prime')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2GbPBGQmbjiH"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "v8aALjbO8AmI"
      },
      "source": [
        "**Question 21:** Create a **recursive** function that takes three inputs - principal amount, rate of interest, number of terms - and returns the compound interest."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "REKKTUQF70VN"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "haxoKgXS8nOH"
      },
      "source": [
        "**Question 22:** Create a function that takes a number in decimal expansion and returns the number in binary."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eXtX0qza9kDl"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "v4XPQyeH9kkE"
      },
      "source": [
        "**Question 23:** In an EMI scheme, a  person buys something, but pays in equal\n",
        "monthly instalments, to reduce the debt. However, the seller  keeps\n",
        "adding  compount  intrest on the outstanding  debt.\n",
        "Write  a function emi with three  arguments  - the initial cost/debt\n",
        "the percentage of compound interest  per month, and the value\n",
        "of the monthly instalment. Notice   that  if the  instalment is\n",
        "too small (less than the first months interest) the debt  will\n",
        "never  be repaid, so your function should check this, and   print\n",
        "an error message  and  exit in this case. Otherwise, it should quit\n",
        "when the debt  is  fully repaid, and print out, with sutiable\n",
        "text,  the last instalment  (which may be a freaction of the\n",
        "standard  one) and also  the number of months."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "J2rPZIQsAOSp"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ho7iDVxVAOta"
      },
      "source": [
        "**Question 24:** Given below is a program that asks for a string and prints whether it has the character z or not.  Convert this logic into a recursive function that takes a string as input and returns true if the string has z in it and false otherwise.  "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "hbzKD68L8tg-"
      },
      "source": [
        "s = input('Please enter a string: ')\n",
        "\n",
        "while s != '':                                                                  # given a non-empty string\n",
        "  if s[0] == 'z':                                                               # check if its first character is z\n",
        "    print('The string contains the character z')\n",
        "    break\n",
        "  elif s[0] != 'z':                                                             # else ignore the first character and look at the rest of the string\n",
        "    s = s[1:]\n",
        "else:\n",
        "  print('The string does not contain the character z')                          # empty string does not contain z"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "s2zP0VX8Aqs6"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YVzeWDypH1i1"
      },
      "source": [
        "**Question 25:** You are playing a computer game and you have two choices -\n",
        "1.   do boring repeated tasks and level up or get better equipment\n",
        "2.   spend some money and level up or get better equipment\n",
        "\n",
        "Write a function that takes as input your monthly salary, the time (in hours) required to do the boring task, and the cost of getting the upgrade for which you are doing the boring task and returns True or False.  It should return True if the amount you earn in those many hours is less than the cost you are paying.  Else, it should return False\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kMRpfGS3H0PU"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "fk-dc2qSH5f3"
      },
      "source": [
        "**Question 26:** The following table gives the demand and supply of petrol in Bangalore during a fictional period.  Draw the demand curve (plot demand as a function of price) and supply curve (plot supply as a function of price) on the same figure.  \n",
        "![Screenshot 2021-11-07 at 10.16.45 PM.png](data:image/png;base64,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IIFyCFBYVQ5H+kICJEACJEACJEACJEACJEACJEACJEACJFACAQqrSoBIL0iABEiABEiABEiABEiABEiABEiABEiABMohQGFVORzpCwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAkEKKwqASK9IAESIAESIAESIAESIAESIAESIAESIAESKIcAhVXlcKQvJEACJEACJEACJEACJEACJEACJEACJEACJRDoWoIf9IIESIAESIAESKADCbzyyivmiy++MIsssojp3r276dKlSwfGhkGTAAmQAAmQQDECn3/+uXnxxRfNfPPNZ9u2WWedtZiHdE0CLU6gM/b1uLKqxTMto08CJNAeBL7++mvTs2dP06NHj8x/Cy20kPnhhx9yg3jvvffMgw8+mNt92GHv3r1tGg477LDwq9jfUW4uvfRSx+K1116rclt2vKsCaIEHhxxyiGW01FJLmYEDB5oFF1zQPPTQQ00b81tuucV8++23DYvfWWed5fLQhx9+2LBwGVDHE7j11lvdt3/yySdTRahWnZPKE1qqIHDiiSe675C1fTvttNMq/Mr6o8z6Jk9dEuemVj4rM95ZmTWD/WeffdYMGjTIzDvvvGbllVc2ffv2NZtvvnkzRC0yDh3RF4nqM0VGrgUfDhgwwNYZe++9t4t9XFlyFnLcLLnkkjacAw44IJPresSlVgRara9XKz1Z3nNlVRZatEsCJEACdSIAYdO0adNy+x4EQS63aHSPPvpoM3z4cDN48OBcfoQdvfvuu+b77783n3zySfhV7O8oN5hVff/9962bb775psJtPeJdEUAL/Dj33HNN1GBu6aWXbrrYYzZwxIgRZty4cebTTz81M800U0Pi+Nlnn7k81EghWUMSx0ASCXz55Zfu22MyII1JqnPSuKedagIo71qPV79NfgK3eUw96ps8dUmcm7h8Vo945+HXkW7A7Fe/+pV5/fXXK6LRjO0aIthRfZGoPlMFsBb+gb7wf/7zH/Pxxx+7VMSVJWchxw2EjCiLfjhpvKlHXJLCbaW+XlI68r6jsCovObojARIggRIJzDzzzGbfffc1UUKnCy+80EBYM+ecc5qddtqpKtQZZpjB4C+r+e6778zIkSOzOmuYfT9N/n2zx7tRgG6++WYX1P/93/+ZDTfc0K5awmx0s5nLLrvMCqqaLV6MDwn4BPx6xr/37fA+G4E11ljD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QpuI0zBxWmStfmCtvJQnH9Xys9b7RvaNasWlrPcUVpVFkv6QAAm0FYHO0Plvqw/GxKQmEBZWpXZIiyRAAk1JgO1VU34WRqqBBKKEVQ0MnkGRAAnUiUD8Hok6BUhvSYAESIAESIAESIAESIAESIAESIAESIAESCCOAIVVcWT4nARIgARIgARIgARIgARIgARIgARIgARIoOEEKKxqOHIGSAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEEega9wLPicBEiABEiABEmg/AjjlDsr0cQIcDQmQAAmQAAm0OoFddtnFngKKdOBkXhoSIIH2IEBhVXt8R6aCBEiABEiABFIRwAlPNCRAAiRAAiTQLgRwGm8ZJ/K2Cw+mgwTahQC3AbbLl2Q6SIAESIAESIAESIAESIAESIAESIAESKANCFBY1QYfkUkgARIgARIgARIgARIgARIgARIgARIggXYhQGFVu3xJpoMESIAESIAESIAESIAESIAESIAESIAE2oAAhVVt8BGZBBIgARIgARIgARIgARIgARIgARIgARJoFwIUVrXLl2Q6SIAESIAESIAESIAESIAESIAESIAESKANCFBY1QYfsd2T8Pnnn5vHH3/cvPbaa+brr79u9+QyfSRAAiRAAi1OAG3VQw89ZJ599tkWT0n7Rf/hhx82jz76aPsljCkiARIgARIolUCWtvyDDz6w49VPPvmk1Di0m2dZ22AKq+qQA/bff3/To0eP2L/FF1/cLLvssmbTTTc1V1xxhfnqq69yxWLAgAE2jL333juX+2Z3hE7+oEGDzLzzzmtWXnll07dvX7P55ps3bbTfe+898+CDDzYsfmeddZbLYx9++GHDwmVArUHgsccec/kjqj7q1auX+cUvfmFQX913332tkag6xrJ3796W12GHHVbHUOh1HgK33nqry8tPPvlkHi8a7uaoo44ygwcPNqeffroLO6lvgPyHNn311Vc3I0eONG+99ZZzx5t8BKLyzQ8//GD22msvs+qqq5rrrrsun8d01bQEGtUvuvTSS12dhInUeputt97ahRduz3v27Gl+9rOfmS222ML88Y9/NP/973/rHZ2m9p9teVN/HrPWWmvZvLzddts1d0R/jF1UW+5H/MYbbzSbbLKJWXjhhc2CCy5ox6sYty622GK2TF5//fW+9Za9L6tc5WmDu7YstSaO+EcffWTe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/SRAAiRAAiRAAiRAAiRAAiRAAiRAAiTQRAQorGqij8GokAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBnJ0BhVWfPAUw/CZAACZAACZAACZAACZAACZAACZAACTQRAQqrmuhjMCokQAIkQAIkQAIkQAIkQAIkQAIkQAIk0NkJdO3sAJj++hC45557zAUXXJDa87nnnttcdNFFFfZ/+OEHc8UVV5ixY8eaSZMmme+++86suuqqZvDgweaAAw4wc801V4V9/iABEiABEiiPwLhx48zQoUPNgAEDzNNPP53o8YQJE8xZZ51lXnrpJfP666+beeaZx/Tr188MGTLEjBo1ysw666yR7vPW83ndRUaCD0mABEiABNqWQJa2bPz48eb00083zz//vHnvvffMwIED7bhjm222MSuttFIso7xtUl53sRHhCxJoNwJSKAMaEiibwJgxYwIpK6n/5p133ooofPvtt8Gmm24a637FFVcMPvjggwo3/EECZRKYPHlKgD8aEuiMBN58882gV69etg7u379/IoJdd901tq5GO7DEEksEzz77bJUfeev5vO6qIsAHJNAmBNhetcmHZDJKJ5ClLdt///1j27JZZpkluPHGGyPjl7dNyusuMhJ8SAJtSoDbANtN+tgk6VlwwQXNMsssk/g3www/Zb8ll1yyIuaHH364+cc//mGfLb/88nbV1VVXXWU233xz++zJJ580G264oZFyWeGOP0iABEiABIoREMGSXRE1derUmh6dffbZ5pJLLrH25ptvPnPyySebO+64w66KXXPNNe1zrLTafvvtzddff13hX956Pq+7isD5gwRIgARIoK0JZGnLsBvknHPOsTx69uxpZNLd3HvvveaMM84w888/v5k+fbrZeuutzV133VXFLG+blNddVQT4gATamQBXVrWpGLLJk4WZDhnY2BkMaQSCN954w8VYlt0GsmXEvlt22WWDTz/91L2T5bLB7rvvbt9JuQzuvvtu9443JFAmAc5Ul0mTfrUCAemMB6NHjw5mmmkmV8eino1bWSVbswPZjm3tyra/YMqUypWIqK+33XZb55ds9XYY8tbzed25gHlDAm1IgO1VG35UJik3gaxtGdqqxRZbzLZVopYkeMMbkyASsg0+mHnmme37HXfcsSJeedukvO4qAucPEugEBH5a2tLOEjmmrakIyLJXOzvx0UcfmS5duphrrrnG9OnTx8UReqp0Bn6fffYx0GelBvZPOOEEM+OMM9pH5557rr7ilQRIgARIICcBrH6S7dXm2GOPNaiju3btauvnJO8mTpxoPvvsM2sFeqlk22CFddTXp5xyinuGFbFq8tbzed1puLySAAmQAAm0L4E8bdnjjz9u3nrrLQtFJsQrxiR4uNxyy5nVV1/dvg+vrMrbJuV1ZyPBfyTQiQhQWNWJPnazJBVKeNEwwAwfPtysv/76FVF7+OGH7W+ZxTAyK1/xDj969Ohh1ltvPfscWwW/+eabKjt8QAIkQAIkkJ4AFKg/99xz1gEmDyaIwvS111470QPRG2gGDRpkFllkEbPyyitH2kV9readd97RW5O3ns/rzgXMGxIgARIggbYlkKctw2Eg2L6OyZWdd945ks1XX31ln2MSxjd526S87vyweU8CnYEAhVWd4Ss3URoxWDnuuONsjBZYYIGKWXeN5hNPPGFv+/bta0Txuj6uuOrACCcEvvzyyxXv+IMESIAESCA7Aejp0FOQcPJqLbPJJpuYxx57zEC3FXQIRpkHH3zQPYb+QTV56/m87jRcXkmABEiABNqbQNa2DDs4NtpoI3PooYfaVVRhOvfff7/RlcFo93yTt03K684Pm/ck0BkIdO0MiWQam4fA0Ucf7baNYDsfFPKGzYcffmgfde/ePfzK/fbdYaAEZe40JEACJEAC+QgMHTrUiJ4OI/oC83kQ4QpHch9xxBHuzeDBg9193no+rzsXMG9IgARIgATalkBZbZnoYDQQUt1+++3mlltuMZgc79atm9lrr70q2OVtk/K6qwicP0igExCgsKoTfORmSaIoSjc40Q8GwqaddtqpKmpoDL744gv7HKdvxBlfWPXll1/GWeNzEiABEiCBFARmn332FLayWRk5cqRdeQVXm266qdlggw2sB3nr+bzussWatkmABEiABFqVQFltGU6zVT1WYAFduQ888EDFyqu8bVJed636TRhvEihCgNsAi9Cj20wErrzySqN7vnfbbbfIGXwcDav7weecc85Y/+XkKfeOwiqHgjckQAIk0BQEjjnmGHcMOOprHAuuJm89n9edhssrCZAACZAACdQi8P3335u3337bHjSidvFs3XXXtbqt9FneNimvOw2XVxLoTAQorOpMX7uD0zp27FgbgxlmmMGMGDEiMjbYgqLCKjQMccYXUM0222xx1vicBEiABEiggQRQb+MUV5wqCINJh1tvvdUsvPDCLhZ56/m87lzAvCEBEiABEiCBGgSwiurNN980ECpB1+6RRx5pBVc4xXyLLbYwzz77rPUhb5uU112NaPM1CbQlAQqr2vKzNl+ioEjwqaeeshHbeOONzRJLLBEZSTQQenoUGoU447+DYkQaEiABEiCBjiWALdxbbrmlOe+882xEcEDGnXfeadZYY42KiOWt5/O6qwicP0iABEiABEigBgGccovJ9YUWWsgcf/zx5sQTT7QusIXv1FNPtfd526S87mpEma9JoC0JUFjVlp+1+RKlq6oQs3333TcxgjoD7wukwg78d1B4SEMCJEACJNBxBKZNm2bWWWcdu4oKsVhsscUMTgL0lar7sctbz+d154fNexIgARIgARLIQuDggw82s8wyi3UyceJE5zRvm5TXnQuYNyTQSQhQWNVJPnRHJhOzEFdffbWNAlZU4XjYJKMVOJbg4jSpKPP666/bx5j16N+/f5QVPiMBEiABEmgAgcmTJ5vVVlvN6FHcK664onnkkUcS6+a89Xxedw3AwCBIgARIgARakAAUqUOvLlZP/fe//41MQdeuXU3Pnj3tuw8++MDZydsm5XXnAuYNCXQSAhRWdZIP3ZHJfOaZZ8xnn31mozBkyBCnkyouTsstt5x99f7779tjY8P2sIf873//u3289NJLm7nmmitshb9JgARIgAQaQADHb6+33nrmjTfesKFBnwdOTNJOfVwU8tbzed3FxYPPSYAESIAEOjeBm266yeywww5WN9Vtt90WCePzzz83U6dOte8w9lCTt03K607D5ZUEOgsBCqs6y5fuwHQ++uijLvRlllnG3cfdQPn6TDPNZF+ff/75VdauvfZa88knn9jn0I9CQwIkQAIk0DEEDj30UPPaa6/ZwLfddluDTn+ao8Pz1vN53XUMHYZKAiRAAiTQ7AQ22GADF8UzzjjDYEdI2Bx11FFGD37y9TDmbZPyugvHi79JoN0JzLjLLrsc06dPn3ZPJ9PXgQQuvPBC8+STT9oYHHLIIWbxxRdPjA0Upr/66qvm6aefNs8//7zBzP3KK69soJAQ2wn32GMP22DMMccc9neagVFigHxJAhEEdCl4t25U4B+Bh486AYHLLrvMnoi0wAILROoahE6qAw880JHYbLPNzMMPP2xXxN5///1VVxwFrrPJeev5vO5cJHlDAm1IgO1VG35UJqk0ArXasgUXXNBMmDDBrhDG6X8vvPCCPRgEOzcwBsGkzJgxY2x8sH3v8ssvd5MyedukvO5Kg0KPSKBFCHQZP358sPbaa7dIdBnNViSw+eabG11W+95777nT/pLS8sorrxhsGZwyZYq11qVLF7va6ptvvrG/oavquuuuM8OGDUvyhu9IIDeBKVP+t9y7d+9euf2gQxJoZQLrrruukT6C1T2FznvYbLfddgYrXdMabBccN26cs563ns/rzgXMGxJoMwJsr9rsgzI5pRKo1ZYhMBwSAn2LmFRRgwOcPv30U/1pIGCCGhIcJuKbvG1SXnd+2LwngXYnwG2A7f6FmyB9enJf9+7dUwmqEOUll1zSrsbaeOONDZQaBkFgVFD185//3DYWFFQ1wcdlFEiABNqWACYFYLCqNcpgBWwWE/Ynbz2f112WuNIuCZAACZBAexCo1ZYhlT169DDQsbvXXnsZta+CKrRdGHO8+OKLVYIquM3bJuV1hzBpSKCzEODKqs7ypVs4nV9//bXdEvjFF1+YRRdd1OBEQW1IWjhZjHqTE+BMdZN/IEavrQjkrefzumsreExMpyfA9qrTZwECKJHAV199ZSZNmmRwSiBU5fTr18/MMsssqULI2ybldZcqUrREAi1MgMKqFv54jDoJkED9CLDzXz+29JkESIAESKA8AmyvymNJn0iABEiABJqHALcBNs+3YExIgARIgARIgARIgARIgARIgARIgARIoNMToLCq02cBAiABEiABEiABEiABEiABEiABEiABEiCB5iFAYVXzfAvGhARIgARIgARIgARIgARIgARIgARIgAQ6PQEKqzp9FiAAEiABEiABEiABEiABEiABEiABEiABEmgeAhRWNc+3YExIgARIgARIgARIgARIgARIgARIgARIoNMToLCq02cBAiABEiABEiABEiABEiABEiABEiABEiCB5iFAYVXzfAvGhARIgARIgARIgARIgARIgARIgARIgAQ6PQEKqzp9FiAAEiABEiABEiABEiABEiABEiABEiABEmgeAl0RlSlTpjZPjBgTEiABEmgiAqwfm+hjMCokQAIkQAKxBNhexaLhCxIgARIggRYkwJVVLfjRGGUSIAESIAESIAESIAESIAESIAESIAESaFcCdmVV79692jV9TBcJkAAJ5CKgM9SsH3PhoyMSIAESIIEGEWB71SDQDIYESIAESKChBLiyqqG4GRgJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEASAQqrkujwHQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQEMJUFjVUNwMjARIgARIgARIgARIgARIgARIgARIgARIIIkAhVVJdPiOBEiABEiABEiABEiABEiABEiABEiABEigoQQorGoobgZGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQRIDCqiQ6fEcCJEACJEACJEACJEACJEACJEACJEACJNBQAhRWNRQ3AyMBEiABEiABEiABEiABEiABEiABEiABEkgiQGFVEh2+IwESIAESIAESIAESIAESIAESIAESIAESaCgBCqsaipuBkQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJJBGgsCqJDt+RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAk0lEDXhobGwDoNgXvuucdccMEFqdM799xzm4suuqjC/u67724+//zzimfhHyuvvLI5+OCDw4/5mwRIgARIoAQC48aNM0OHDjUDBgwwTz/9dE0fgyAw6623nnnggQfM9ddfb7baaqtYN6jfTzvtNHPfffeZV155xXzyySemb9++ZumllzajRo0ygwYNinTLtiESCx+SAAmQAAlEEMjSjo0fP96cfvrp5vnnnzfvvfeeGThwoBk8eLDZZpttzEorrRTh+0+PJk6caMcyTzzxhHnuuedM9+7dTf/+/c1BBx1k29GfbP50x/bsJxa8I4FIAlIopW9JQwLlEhgzZkwgGS7137zzzlsRgffffz+V2y222KLCHX+QQFkEJk+eEuCPhgQ6K4E333wz6NWrl62LpcOdCsNRRx3l6u5rr7021s2jjz4a9OjRw9kNtxczzDBDIAKrKvdsG6qQ8AEJ2LaK7RUzAglUE8jSju2///6xbdIss8wS3HjjjdUB/PjkwgsvDGAn3Jbpb/gdNmzPwkT4mwSqCXBlldQiNOUTWHDBBc0yyyyT6PELL7xgfvjhB2tnySWXrLD71FNPud+LL764mWOOOdxv/2aJJZbwf/KeBEiABEigBALPPvus2XLLLc3UqVNT+fbdd9+Z0aNHm5NOOqmm/U8//dRsu+22Ztq0adbu5ptvbrbffnszzzzzmEceecTOan/xxRf2usIKK5gddtjB+cm2waHgDQmQAAmQQAKBLO0YdoOcc8451reePXuaI4880vTr18/AjxNOOMH85z//MVtvvbW5/fbbq1ZJXXfddQYrpGDmm28+s9NOO9kVxi+//LI5/vjjDdo8+L366qub7bbbztrDP7ZnDgVvSCCWAIVVsWj4oggBVOj4izNvvfWW+cUvfmE++ugjM//88xuZga+w6lfgWL4LgRUNCZAACZBAfQl88803VuAEodO3336bKrB///vfZrfddqvoeCc5PP/8843Mdlsrv/vd78wf//hHZ33jjTe2QrJVV13VTJ8+3RxxxBGxwiq2DQ4bb0iABEiABH4kkLUdk7UcbqIFakkefvhh06dPH+vbkCFDrOAJ29Lh75VXXlklrNJJmhlnnNHcfPPNZq211nLfYo011jBoz2DOO++8WGEV2zOHjDckUEGACtYrcPBHIwhgAARBFgRVXbp0Mddcc41rFDR8FVZhhoKCKqXCKwmQAAnUj8Drr79uVlxxRXPsscdaQVXXrl1tHZ0UIjrp0B2odfbMM8+cZN2+u//+++11zjnnNMcdd1yVfaymwkormClTppgPPvjA2dFw2DY4JLwhARIgARL4kUCeduzxxx83mESHwQopFVT96KVZbrnl7Koo/L7rrrv0sb3ecccdTp8jVhf7gipYWGWVVQwEVjCPPfZYxSQQ2zOLhf9IIJEAhVWJePiyHgTOOussg4YBZvjw4Wb99devCkYrcKy+oiEBEiABEqg/AShQh1JYGHTWJ0yYYNZee+3EgLEqFlsAYQ444ABzyy23JNrHy9lmm81ur0AnHvdRBtsw1Lz77rt664RibBscEt6QAAmQAAn8SCBPO4btfhA6nXLKKWbnnXeOZPnVV1/Z55hk940eDoVt7FgJHGVuvfVWu43wyy+/NDPNNJOzwrGOQ8EbEoglwG2AsWj4oh4E3nnnHTeTvsACC9iGIRwOGoRJkybZxzh5AwMmnCz12muvmd69exvMuuN0qtlnnz3slL9JgARIgAQKEICQ6JBDDjF77713qjoWHXc56MKIYnV7UpKumkqKwg033JD02r7717/+Za9YqYWBBAzbBouB/0iABEiABBIIZG3HsPVvo402sn9R3qJde/LJJ+2rTTbZpMKKbmlfZ511DLYBwmCsg62EcniUVXkCQVbYsD0LE+FvEogmQGFVNBc+rROBo48+2nz22WfWdygsxFaOsIEyw++//94+Pvnkkw3+wgbHm1966aX2ONnwO/4mARIgARLITgCTAG+88YaZddZZUzv+5z//GVmPp/YgwiIU2KqwChMWurWQbUMELD4iARIgARJwBPK0Y86xd4Mt6BBSoT3CimGsIO7WrZvZa6+9PFvGHUKy1FJLmQcffNDsuuuu5pVXXqmws8suu5izzz7bzDXXXO452zOHgjckkEiA2wAT8fBlmQRwGsZVV11lvdTTMqL812Wx/js0Ahi06GqqV1991W5PeeKJJ3xrvCcBEiABEshJAPVrFkEVgomacMgZvHWG05N0GwZmqU8//XTnHdsGh4I3JEACJEACEQTytGMR3pg111zT7Ljjjubqq682OJ0W7RF2eWD7uhro4H3//fftT5xku8EGG1QJqvASk+tQ0P7555+rU7el3T2QG451fBq8J4H/EaCwijmhYQRwgobu+cbJUXGDIn9AgmNeMbuBbYHQc4X7bbbZxsYZq6+g8yrtiVUNSygDIgESIAESyEwACm433HBD8+GHH1q3Bx98sDtFCQ/YNmRGSgckQAIkQAIZCWB88fbbbxscMqIGz9Zdd12r20qfYbsfThKEgSALYxysvILaEtyPHz/e9O/f377HOAa7S9SwPVMSvJJAMgEKq5L58G2JBMaOHWt9m2GGGcyIESNifd5///3t0bB/+tOfzD333GN69erl7GIWH6uzll9+efvsmWeeMZjNoCEBEiABEmhdAhMnTrSCKT2RadiwYe4ocU0V2wYlwSsJkAAJkEC9CGAVFXRRTZ8+3eqfOvLII63gCqeYQ0cjtvDBfPPNNxVROOigg8xf/vIXs8QSS9gJeRxQgq2B3bt3t/awFRC7TGDYnlkM/EcCNQlQWFUTES2UQQDb9XQWYeONN7YVeZy/mIX4zW9+Y1Dp67Y/3y4akQMPPNA90kbDPeANCZAACZBAyxDAKUzo1L/33ns2zqj/r7nmmopZbbxg29Ayn5QRJQESIIGWJrDIIosYTK4vtNBC5vjjjzcnnniiTQ90V5166qn2fuGFF3ZpxCl/xx13nPutN1CyjpNyYbA664UXXrD3bM8sBv4jgZoEKKyqiYgWyiCgq6rg17777lvYS+zrVvP666/rLa8kQAIkQAItROCCCy4wm2++udPlcdhhh5krrriiSlCVNklsG9KSoj0SIAESIIG0BLAtfZZZZrHWsRIYZo455rAn/uEeu0DmnHNO3FaZZZdd1j176aWX3H2tG7ZntQjxfWcg8NNm3M6QWqaxQwhgFgIKCmGwNBbHwyYZbOubNm2awVGy2B8eZT7++GP3GLMfNCRAAiRAAq1FALPVqsMDK2bHjBlj9t5779hEsG2IRcMXJEACJEACOQlg+zlOoMXWP2zPw/gjbKC/qmfPngZ2P/jgA/caYxCMSfAH/VVdunRx7/Tmhx9+0FvTo0cPe8/2zCHhDQkkEqCwKhEPX5ZBAHqlPvvsM+vVkCFDIityDQdLZKFgF/YXXXRR2yjoO//q66nq16+f/4r3JEACJEACTU7gzDPPdIIqzEZff/31iRMZbBua/IMyeiRAAiTQogRuuukmg5VTMIsvvrhVRRJOCk7ymzp1qn289NJLu9fLLLOMee6558wnn3xiXnzxReO/U0sYB8FAkIWDo9ieKRleSaA2AW4DrM2INgoSePTRR50PqNSTDGbXobsEZvLkyebGG2+sso4TATHQgcEsx1prrVVlhw9IgARIgASak8Arr7xiDj/8cBs5bKO49957EwVVsMi2oTm/JWNFAiRAAq1OYIMNNnBJOOOMMwx2hITNUUcdZYVMeL7GGmu416NGjXL3I0eOrHKLFVfnnHOOtTNgwAAzzzzzsD1zxHhDArUJUFhVmxFtFCSgitXhTS1hFezgpEBdRjt8+HB7+h9mIdB43H333XZW4osvvoBVc8wxx9g94/YH/5EACZAACTQ9gf3228+esoSIYhb7zjvvNMcee2zsH44Qh2HbYDHwHwmQAAmQQIkEMDZZb731rI84EGq77bazpwDiwYcffmjQZp111ln2PZSq4wAoNSuttJIZOnSo/YkTzHfaaSd3WiAOgII6E5wiCANhlhq2Z0qCVxKoQWD8+PGyxZaGBOpHYLPNNgskG9o/Oe0pVUCiZNe5gVtRamj/1B9cDz300ECEWKn8oyUSyEpg8uQpAf5oSKAzE1hnnXVsXSwnF6XCgD6F1tPXXnttlRvZJuHeq71a1wceeMD5w7bBoeANCTgCbK8cCt6QQBWBNO0Yxieif6qiferWrVvFb9FlFdx3331V/stq4UC2/1XYnXXWWSt+jx49usod27MqJHxAAlUEuLJKesk09SWgMwrdu3d3igVrhXjyySfbLYBQyA4zffp0+4cVVzgdQwZB5pRTTrHHytbyi+9JgARIgATyEcDR3TDYhpfGqP04N6+++moabyrs+GGzbahAwx8kQAIkQAI1CGi75LclYSdQfA7dUnvttZcbW3z66afWGtwNGzbM6qQSwVfYqenbt6957LHHzK677mrmmmsu+/7rr7+2u0QGDhxo/vCHP9idIGGHbM/CRPibBKoJdMEsqOoIqn7NJyTQ8QTeffdd8/LLL9vBEo5/lZmOjo8UY9D2BKZM+Z8izd69e7V9WplAEmhFAmwbWvGrMc71IMD2qh5U6WdnJfDVV1+ZSZMm2UOe+vTpY3CQk+zwSIUDJ/9hzILt68svv7zBRH0aw/YsDSXa6YwEKKzqjF+daSYBEqhJgJ3/mohogQRIgARIoAkIsL1qgo/AKJAACZAACZROgNsAS0dKD0mABEiABEiABEiABEiABEiABEiABEiABPISoLAqLzm6IwESIAESIAESIAESIAESIAESIAESIAESKJ0AhVWlI6WHJEACJEACJEACJEACJEACJEACJEACJEACeQlQWJWXHN2RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmUToDCqtKR0kMSIAESIAESIAESIAESIAESIAESIAESIIG8BCisykuO7kiABEiABEiABEiABEiABEiABEiABEiABEonQGFV6UjpIQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQF4CFFblJUd3JEACJEACJEACJEACJEACJEACJEACJEACpRPoCh+nTJlausf0kARIgATagQDrx3b4ikwDCZAACbQ/AbZX7f+NmUISIAES6EwEuLKqM31tppUESIAESIAESIAESIAESIAESIAESIAEmpyAXVnVu3evJo8mo0cCJEACjSWgM9SsHxvLnaGRAAmQAAlkI8D2Khsv2iYBEiABEmgNAlxZ1RrfibEkARIgARIgARIgARIgARIgARIgARIggU5BgMKqTvGZmUgSIAESIAESIAESIAESIAESIAESIAESaA0CFFa1xndiLEmABEiABEiABEiABEiABEiABEiABEigUxCgsKpTfGYmkgRIgARIgARIgARIgARIgARIgARIgARagwCFVa3xnRhLEiABEiABEiABEiABEiABEiABEiABEugUBCis6hSfmYkkARIgARIgARIgARIgARIgARIgARIggdYgQGFVa3wnxpIESIAESIAESIAESIAESIAESIAESIAEOgUBCqs6xWdmIkmABEiABEiABEiABEiABEiABEiABEigNQhQWNUa34mxJAESIAESIAESIAESIAESIAESIAESIIFOQYDCqk7xmZlIEiABEiABEiABEiABEiABEiABEiABEmgNAl1bI5qMZSsTeOGFF8wJJ5xgnnnmGfPaa6+ZHj16mP79+5vdd9/dDBs2LDZpP/zwg7niiivM2LFjzaRJk8x3331nVl11VTN48GBzwAEHmLnmmivWLV+QAAmQAAkUIzBu3DgzdOhQM2DAAPP0008nevbmm2+a448/3jz00EMG9z/72c9sXb311lub9ddfP9Ft+OWIESPMTTfdZPr162fuv//+itd77LGH+eSTTyqeJf1AO4M00JAACZAACXROAlnasjChl156ybZh3377rbnooovMZv/P3pnA21T1/38pY1I0SOVWPCFT0oDiiRCaRJSop0l+SRIN8pQI/QsNT8NDonmioniaUEqkSZQUksi9lClNlFTOf3/W71n7t894zz33XJxz3t/X69prr2nv/d6111nftb7f75lnRlax51u2bDF33XWXefvtt81XX31lx6kjjzzS1KtXz1x33XXmhBNOCGvHWBaGgxMIxCVQavbs2aGWLVvGrUABBIpDYOzYsaZ///5GH/lYcs4555gXXnjB7LFH+CY/KaY6depkXn311VjNzHHHHWemT59uDjjggJjlZEKguAQKCtbYLvLyqhe3K9pDIOMIrF692rRo0cKsWbPGLi5o0SGe6Mf56aefbrZt2xZVRd/28ePHm549e0aVxcqYMmWK6dq1qy2Ssmrp0qVh1Q488ECzadOmsLxEJ/fdd59d3EhUhzIIZDoBxqtMf4Pcf0kRKMpYFnkPmrtokXzhwoW2aNKkSaZbt26R1cxHH31kOnbsaNavXx9VpgyNgwMGDLDKLFeBscyR4AiBxATYWZWYD6XFIPDxxx/7iqpy5cqZ66+/3kgxmp+fb1fgNYBo9fyOO+4wN998c9iVBg0a5CuqGjVqZCcbFSpUMBMnTjQvv/yyWbBggWnXrp09lipVKqwtJxCAAAQgkDqBxYsXm86dO1tFVWG9rF271taVosr9IP/73/9ulUyjR482P/zwg91Fu99++9l6ifr79ttvzRVXXJGoimnQoEFCZZUmF9qJ60Qr2wgEIAABCOQegaKMZbHoDBkyxFdUxSpX3k8//WQVWE5RddZZZ5nu3bubypUrmw8++MDcfffdZuvWrfZ4zDHHmAsvvNB2xVgWjyj5EIggoJ1VCARKgkDv3r1D3n9u9s9bLQ+7hPdRD3mrCrasSpUqYWXr1q0LlS9f3pY1bNgw5A0EfrlnGhjyzDr8fmfOnOmXkYBAOgnk5xeE9IdAIFcI/P7776GhQ4eGypQp439j9Q33zLbjIvBWi/26jz32WFg9z/Q75P1gt+UnnXRSWFnkib7t3gKE35eu6+2siqxW6Pm1117r96E0AoFcIMB4lQtvmWdMlkAqY1lk354JeshbgPHHE41J3s6qyGqhUaNG+XW8Rfmo8k8++STkLdjbOnl5eVHl8TIYy+KRIT/XCITbXnn/JyIQSBcBbYuV7L///kbmfkGpWrWqOf/8822WVt5XrVrlF8tPlTMn6dOnj9lnn338Mu2ikv+rPffc0+aNGTPGLyMBAQhAAAKpEVi5cqU1rx42bJg12y5durQpbNeq/Ao++uij9oKHHHKIueiii8Iu7i02mAsuuMDmyZfVp59+GlYePLn//vuNt/hQ6DWDbSLTU6dONffcc4/NbtWqldHOLgQCEIAABHKHQCpjWSQd7ZbSeKYxzs03Iuu4c+dXce+99zbDhw932f5Ru6m000pSUFBgNm7c6JfFSzCWxSNDfi4SQFmVi299Jz2zzD4SSXAiVLZsWb/q+++/b9PKi2UbLgftrVu3tnXk02r79u1+WxIQgAAEIFB0AnKg/vnnn9uGRxxxhJk7d641207Uk/xY6Ue9REopmQFGSo8ePfwsmX3HEl1Xpt8S+fWQoqmo8ssvvxgtbki8nbk2MEdhk4yiXoP6EIAABCCwexNIZSyLfKK+ffsauSrZd999zeOPPx5ZHHYuFyXyr9i0aVOjdCypVq2an/3dd9/56VgJxrJYVMjLZQLRvyxzmQbPnlYCLmLG999/76++uwvoY/3MM8/Y08aNG5tDDz3UFRn5upLI14hnIujnBxNNmjSxp3LEvnz58mARaQhAAAIQSIGAflDLv8YXX3xhncoW1oX7VqteZKQj19Z9q3Uey0m7Z65hFV3aTauog7fffrtrWqTjrbfeatwkQD4Q8VVVJHxUhgAEIJA1BIo6lgUfXE7UZeEhkfWGZ7oXLI5KT5482fpofPPNN6PKXMa7775rk1qEl2IrkTCWJaJDWS4SKJ2LD80z7xwCCln+4IMPWme3CtE6f/58c/LJJxs50dWESEosicqC4iI9JYr0F9y1pWhVclSIQAACEIBAagTat29vzbG1KylZcd9q1Y/3vZY5YaVKlYxWi/WtjhQpljzfVkY/4jVBUDCOoorMyGVGKNGusIEDBxa1C+pDAAIQgEAWEEhlLHOPLTO9K6+80p5qDqMdw87Mz9Up6vG1114zTll1/PHH27EuXh+MZfHIkJ/LBFBW5fLbL+Fnlw8ThXuVyd6HH35oxo0bZ/+Cl1VkP7cDS/naKaWoGRL5uoonQWXVr7/+Gq8a+RCAAAQgkASBvfbaK4la4VWcCaByC/teS1kV+a1+6623fB9T8pUl3x6pyMMPP2zHDrXVRCNoVp5Kf7SBAAQgAIHMJJDKWKYnlX+qiy++2Pz4449G8xfNWYorsvxQnxKZpWuhPpEwliWiQ1muEsAMMFff/E54bu2cUvhzKaqcRE4irr76arvjypXLJMT5spKzwniikLBOIidALp8jBCAAAQiUHAF9r51o91Q8cd/r4LdagTX0I96LamNatGiR8m4oLXB4UQjtpbUrrGfPnvFug3wIQAACEIBATAIKzvH222/bMgUOCS6Kx2xQSKZ8XnkRbo3bgexF90toXs9YVghQinOWAMqqnH31Jf/gZ599to3upCudccYZZtmyZTbKnyJhyCbbC49uvvnmG9O2bVs/GqAmG05Z9ddff8W9yeCkJ55Dw7iNKYAABCAAgWITCK5g64d2PHHf6+C3WjugZBaoRYknn3wypnP2eP0F8xVkw/mqUoTZRDu8gu1IQwACEIAABERATtllki656qqrjEwJiyOyKmnWrJl10q5+unTpUqg/Rsay4hCnbTYTQFmVzW93Fz7bG2+8YebNm2fvoGXLlkbmfnXq1LGKKPk2GTp0qLn33ntt+c8//2xGjhxp09omq2h/ks2bN9tjrH+CZfvss0+sKuRBAAIQgEAJEpCphJPgN9nluaMrc9/qp556yjz33HO2WONAjRo1XNUiHydMmOC30SQDgQAEIAABCCRLQME95JtKkcVr165tRo8enWzTmPVef/11G0l33bp1tlwRceW0Xf4bEwljWSI6lOUyAZRVufz2S/DZg6Z/t9xyi79bKnhJray7KIBBB4ZuAuQmOME2Lh0sU2hZBAIQgAAEdi4B963WVYPf5OBdyMxPPkAkzhww6Ldj1KhRdoKgSYL7e++992z9r776yspWHeQAAEAASURBVM+Tk9pIkTNcTQwkijoo57UIBCAAAQhAIFkC06dPtxFwVV8OzuU70Y1FOnbv3t3vSq5LlHfaaaf5ecHE+PHjzVlnnWW2bNlis2+88UYbOKQwRRVjWZAiaQiEE0is5g2vyxkEkiawfv16v65TSPkZ/03I3K9WrVpm7dq1YVGiNAFasGCBNRGUw8M99ojWqa5cudL2orK6detGds05BCAAAQiUMIGgssp9kyMvKb8dzqS7fv36tljfdSdSSMUTtXPlTuEVrDtx4kTrFFd5ffr0CRaRhgAEIAABCBRKIDge/fHHH/6YE6uh3JjoL5aMGDHCDBkyxBbJSuTf//636d27d6yqUXmMZVFIyICATwBllY+CRDoJSAnlRLbgRx11lDsNO2oiIwmagRx99NHWbHDDhg02ZOwpp5wS1kZOfadNm2bz6tWrZ8Oih1XgBAIQgAAESpzAkUceaeS3Sj6pnn/+eevrI/KiynfStGlTm5QTdPmriifPPvus+fbbb412zfbq1ctWa9CgQVR1Fw5cBaeeempUORkQgAAEIACBRAS04H399dfHrSLfupMnT7blp59+utG8w7krcY1kzu4UVfLD+MILL5gOHTq44kKPjGWFIqJCDhNAWZXDL78kH/3YY4/1u3/ggQfsttigM14VyoZbW24lbhKjtMwDZTOuFY6HHnrIRCqr5OvErbIr2iACAQhAAAI7n4B8UF1yySVm7NixZu7cuWbJkiX2h7y7E/kCeeKJJ+ypogUqmIbkmmuuscd4/3z88cdWWXXwwQebO++8M141P9JslSpVbKjxuBUpgAAEIAABCMQgIGVVonFGbkqcsuqiiy4y3bp1C+tFu38HDRpk8ypWrGjefPPNsDlNWOU4J851CmNZHEBk5zQBlFU5/fpL7uGbN29uQ7bOnDnTOlrv2LGjueOOO4yUWHJiqLCw7uOuCFHXXXedfzMyG5SNuCJESTElh+yKHqjJjlbp3Uq7BoV+/fr57UhAAAIQgMDOJTBgwAAzbtw4a47Xpk0b+81u0aKFyc/PN9pBJQWWRIsQ6fQvqAiA2n0ribXryhbwDwQgAAEIQKAECfTt29fI4kMiKxH5wNJfPLn88st9f72qw1gWjxT5EPhfAiir+C+hRAjIH5UUUieeeKKR48BZs2ZZB7hSTOmj7mzEZdetnVeRfqcGDx5s3n77bdt2zJgxduW+TJkyVtGlG5avKq3YS5GFQAACEIDAriEgU8CBAwfaiK6KfqTor+XKlfN/vOuuFMJbCw7pFJkJOnG+sNw5RwhAAAIQgEBJE1i2bJnRoryTzz//3OgvkbRu3TpMWcVYlogWZRDw5vxAgEBJEdAOqS+++MLuftLkRfLbb7/5iipNYObPn29X3yPvQT6v5GRdETcURUMRpbQjS1KnTh3rs6pLly6RzTiHAAQgAIE0EXDBLbSokEi0a1Y7YatWrWqruVVmfbvlYPbVV181WqhIVtz13DFWu2D0QXZWxSJEHgQgAAEIiECyY1ksWsFxKJhW3RUrVsRqkjAvsg/GsoS4KISAKTV79uyQVkIRCJQkAUV1UrQoOVSXKYh2UskJYTIivydy0r5161Zz2GGHmZo1a/oDTzLtqQOBVAgUFKyxzfLyqqfSnDYQyEkCMv9bvny5kT8rhfiuXLlyTnLgoSGwMwkwXu1M2lwLAhCAAAR2FgHMAHcW6Ry/jlYStFsqGCUwWSTly5cvsrPCZPumHgQgAAEIpI+AFhT0h0AAAhCAAAQgAAEIQKA4BDADLA492kIAAhCAAAQgAAEIQAACEIAABCAAAQiklQDKqrTipDMIQAACEIAABCAAAQhAAAIQgAAEIACB4hBAWVUcerSFAAQgAAEIQAACEIAABCAAAQhAAAIQSCsBlFVpxUlnEIAABCAAAQhAAAIQgAAEIAABCEAAAsUhgLKqOPRoCwEIQAACEIAABCAAAQhAAAIQgAAEIJBWAiir0oqTziAAAQhAAAIQgAAEIAABCEAAAhCAAASKQwBlVXHo0RYCEIAABCAAAQhAAAIQgAAEIAABCEAgrQRQVqUVJ51BAAIQgAAEIAABCEAAAhCAAAQgAAEIFIdAaTUuKFhTnD5oCwEIQCBrCfB9zNpXy4NBAAIQyCoCjFdZ9Tp5GAhAAAI5T4CdVTn/nwAAIAABCEAAAhCAAAQgAAEIQAACEIDA7kPA7qzKy6u++9wRdwIBCEBgNyDgVqj5Pu4GL4NbgAAEIACBuAQYr+KioQACEIAABDKYADurMvjlcesQgAAEIAABCEAAAhCAAAQgAAEIQCDbCKCsyrY3yvNAAAIQgAAEIAABCEAAAhCAAAQgAIEMJoCyKoNfHrcOAQhAAAIQgAAEIAABCEAAAhCAAASyjQDKqmx7ozwPBCAAAQhAAAIQgAAEIAABCEAAAhDIYAIoqzL45XHrEIAABCAAAQhAAAIQgAAEIAABCEAg2wigrMq2N8rzQAACEIAABCAAAQhAAAIQgAAEIACBDCaAsiqDXx63DgEIQAACEIAABCAAAQhAAAIQgAAEso0Ayqpse6M8DwQgAAEIQAACEIAABCAAAQhAAAIQyGACKKsy+OVx6xCAAAQgAAEIQAACEIAABCAAAQhAINsIoKzKtjfK80AAAhCAAAQgAAEIQAACEIAABCAAgQwmUDqD751bzxACS5YsMbfddpv57LPPzNdff20OOuggU7duXXP55ZebLl26xH0KlW/ZsiVuuQqaNGlirr322oR1KIQABCAAgeIR+O2338zIkSPNnDlzzKJFi2xntWvXNj169LDf8r322ivsAm+88YYZP358WF6ik3322cc88sgjYVV27Nhhnn76aTNhwgTz5Zdfmj///NM0a9bMNG/e3PTr189UqlQprD4nEIAABCAAgUgCs2bNMu3btzf169f3x6/IOjqfMWOGeeyxx2IVheXdeeedJi8vLywv8iTZa/78889m1KhRRmOmxjmNhS1atLB/vXr1MmXLlo3smnMI5BSBUrNnzw61bNkypx6ah915BMaOHWv69+9v/vjjj5gXPeecc8wLL7xg9tgjfJPfxo0bTdWqVWO2CWZ27NjRTJs2LZhFGgJpIVBQsMb2k5dXPS390QkEMpWAFhrOO+88+0M61jPUqVPHTJ8+3RxxxBF+8ZgxY0zfvn3988ISVapUMZs3b/arSTHVqVMn8+qrr/p5wcRxxx1nr3nAAQcEs0lDICcJMF7l5GvnoZMgsHr1aqv4WbNmjV0o1wJ6PNGYpbGrMFm4cKFp3Lhx3GrJXnPp0qWmVatWZsOGDTH7at26tZk6dSoLMzHpkJkrBNhZlStvehc858cff+wrqsqVK2euv/56I8Vofn6+GTFihNHH/MUXXzR33HGHufnmm8Pu8NNPP/XPa9SoYSpWrOifBxM1a9YMnpKGAAQgAIE0Evj999/Nueeea5YvX257bdSokVVCHXjggeb11183Dz30kFVinXLKKeaLL74wboeVFhsaNGiQ8E40adDuKUmtWrXC6g4aNMhXVOma2klVoUIFM3HiRPPyyy+bBQsWmHbt2tljqVKlwtpyAgEIQAACEFi8eLHp3LmzkaIqGfnkk09sNc05NPeIJ/HmJKqf7DVlOaIFGaeoOv/88+1O5VAoZB599FG7EP/WW2+ZDh06mHnz5sW7FfIhkP0EtLMKgUBJEOjdu3fI+z/I/k2ZMiXsEuvXrw95kx1b5q2oh5XpZPTo0X7blStXRpWTAYGSJpCfXxDSHwKBXCYwfPhw/1vs/WgOeeaAYTgefvhhv3zw4MFhZYlOvvnmm9B+++1n2+6///6hVatW+dXXrVsXKl++vC1r2LBh6KeffvLLPOVWyDMR9685c+ZMv4wEBHKVAONVrr55njsWAW+RJTR06NBQmTJl/LFC8xHPBUms6jbvr7/+Cu299962/kUXXRS3XryCol7TU0j593b11VdHdespr/xyz4VKVDkZEMgVAuG2V9mvm+MJdyKBjz76yF7Nm4gYmfsFRavuWkWQ/PDDD8abqASLjdtZ5U1mEq5uhDXiBAIQgAAE0krgtddes/15yiMzbtw4o2NQevbsaU488USb9eSTTwaL4qZlFq7dWjL7066oSZMmhZkQyk/Vtm3bbPs+ffpYHx6uM9WXD8Q999zTZiVjsuHacoQABCAAgewm4C1wG5mJDxs2zLogKV26tB1nCntq+dR1fnLVviiSyjXlAkWiscxbFIq6nLfg7+fJzB6BQK4SQFmVq29+Jzy3FE2JJGi6EelA0Cmrjj322ERdUAYBCEAAAiVIQD41JMcff7w5/PDDY15JfjUkMvFesWJFzDrBzPvuu8/Mnz/fZknZ1bZt22Cxef/99+25xoVu3bqFlelEQTrcNeXTavv27VF1yIAABCAAgdwjoAAgn3/+uX3wIzw/inPnzrUuSAoj4eYdqldUZVUq1/QsSMzjjz9u7r77blO5cuWo21NQEyeRfn1dPkcI5AIBfFblwlveRc945plnmjfffNN8//331v76sssu8+/ku+++M88884w9l5PCQw891C/TB1oRMSSaIGmgUQQqrXoo+sYxxxxjo3o43yh+QxIQgAAEIJA2Ar/88ovxTPBsf4cddljcfhW9yIn8UB155JHuNOr47bff+qvI8nulKEiRIn+HEvUjx+uxRJFgFT1JjtjlT6sw/1ix+iAPAhCAAASyj0C1atXMDTfcYLQ7Kdm5gvNXpZ1OUnIpCq38MMpv49FHH22dtHtm6XFhFfWaGrPijVsa1+6//37/WqeffrqfJgGBXCOAsirX3vhOfF6ZeTz44INW8aTwq1pJP/nkk40mK1pJkBJLorKgyDmhZztusxQqXX+RokmMViQUwhyBAAQgAIH0E6hUqZKRGbe+1QqIEU/0TXfy448/umTM45AhQ4yUYBKZ88Xagbtp0yZbnijSX7CdnOfG+9FvO+IfCEAAAhDICQLt27e3rkUiTdYLe3i3s0rzj/r16/sLNa6drEGuueYac/vtt9tgHy5fx1SvGexDC/W6B5n8KQKgovBKtLs40WJRsA/SEMhGAiirsvGt7ibPdMghhxiFd5W5xocffmj9ncjnSVAU1Uk7sILiBoxgXu3ata3fEq3a//rrr9bURJEFP/jgA7v7KliXNAQgAAEIpIeA55DWvPvuu/Ybrm+zdrYGRYqn5557zs+SD8J4ol1azz77rC2WsslzYhtVVSvKW7dutflSlMWToLJKYwICAQhAAAIQSHYnVSSp4NxDY5Ui/ikS7dq1a+1ijefM2tx7771WESZlUlBSvWawD42jl156aTDLdO/e3bdCCSvgBAI5RACfVTn0snf2o2o1XiFjpahyEumbyouA4fsucXWCA8ZJJ51kCgoK7O4s7cxS+rzzzrNVtfohfydy1otAAAIQgED6CVxwwQW2UymRFBRDO1+daBfVhRdeaLzofS4r4fdYpt/OD4fMwmOtfMvkwvkz9CIz+f1GJoI+PlBWRdLhHAIQgAAEkiWwYcMGI/ckEjlk9yL12eBP8+bNM17kWrvTye30nTZtWtgCTbLXKKye273sgoeo/sSJE03Xrl3tIn1h7SmHQLYSQFmVrW92N3ius88+23hhxe2dnHHGGWbZsmU2wtPGjRvNrbfearyQsnYQkHPdYDRAKbA0qbnnnnusT5Lq1av7T6PVdK3Ma7VDom2y2l2FQAACEIBA+gn8z//8j2natKntWL4E5Xi2WbNm1il6jRo1zH/+8x9rKuiuvO+++7pk1FE+QCRyFnvllVdGlStDCiynrHLm4LEqBhVUFSpUiFWFPAhAAAIQgEChBGTyrsi3//73v82MGTPsDifNUZxoPiO3Jk7Gjx/vkmk79u/f35oeamfx7NmzjfOP9eKLL5qgz9+0XZCOIJAhBFBWZciLyrTblONbrUhIZK4nc786derYSYhWJ4YOHWq306r8559/DvNLJbOTHj16mAEDBsR0jKhVB9mNOwmu9Ls8jhCAAAQgUHwCUixJIeXMtbWTVbtlZ82aZbSzSoqsRx55xL9QPGWVnKa7XbOnnXaaqVmzpt8mmND3XdH+JJs3bw4WhaWDZUEH72GVOIEABCAAAQgUQkALHhqXrrrqKj/SbGQT7XByvqNKYt6hsVNjWbly5ey86Z133jFypyJ5/vnnzVdffRV5S5xDICcIoKzKide88x8yaPp3yy23+CvlwTvRyrqLAqiPclFEPqycrFy50iU5QgACEIBAmglUrVrVLjho5VkO0mWKPXz4cPPee+9Zf1ZacHCiCH+xxO2qUpkmBInE/UAPKqQi6wfL4inIIttwDgEIQAACEEiVgJt7yEJky5YtqXaTVDtFwlU0Q4n8ZbnFnqQaUwkCWUQAB+tZ9DJ3p0dZv369fztOIeVn/DchU49atWpZ54WK5uREZn1qrxWGU045xWWHHYNOfOP1H9aAEwhAAAIQKBYBrTzrL1I++ugjm6VdWDITjBT5u5LvDYl2VHXo0CGySti5lFULFiywZuI7duywZoNhFbwTt0iha2o3LgIBCEAAAhBIhYD8VX3xxRdGSiiNT1IUxRI399D8JJFPxVhtI/MU9W/FihVGrk46deoUWWzP8/Ly/Hz51UIgkIsE2FmVi299JzyzlFBOFi1a5JJRR+dQUL5PJPJR0q5dO/vhvuSSS2xerH+CfqqOOuqoWFXIgwAEIACBYhK4//777Y93+R2MJdu2bfOjFR199NF2kSGynnwLKmqgpE2bNjF32gbbqB+JfpzH2nUrJ+xyciupV6+ekb8RBAIQgAAEIJAKgaefftqceuqp1gXJSy+9FLMLRQiU711JcecdWoSRuxP56B04cGDM6ylz6dKlfln9+vX9NAkI5BIBlFW59LZ34rMee+yx/tUeeOCBmJEsJk2a5DtWdw585a9EPq4k+fn5ZsqUKX4/LqGIgAofK6lWrZo5+eSTXRFHCEAAAhBIIwGZ28nhrEwA3Q6qYPf/+te/bNQk5UWG3Xb1gmbhDRo0cNlxjzIRd85tH3rooah6CvEtf1kSRZxFIAABCEAAAqkSaN26td90zJgxMaPayqWJnJ9LXFRyv1ERE9oR7K4pX1RTp06N6kFznXHjxtl8jYdNmjSJqkMGBHKBAMqqXHjLu+AZmzdvbndI6dJytN6xY0czf/58u3NKocs1GPTq1cvemRwbXnfddf5daqLiokH17NnTRv/TjiuZkii64EknneQPGIoqWLFiRb8tCQhAAAIQSB8BRUFy3+MLL7zQTJ482egbLtNtfX9vuukmezE5nr3iiitiXjjoayMZZZVMu7t37277kmKqb9++ZtOmTUY7qp566il/7NC3v1+/fjGvSSYEIAABCEAgGQKNGze2UW5Vd+HChUbO1KUskmiHr+YlWniXHHHEEXZMsifF+EfjmpRWEs11XnjhBaMdV5rvKEiVFu6dP8hhw4bFDDhVjMvTFAIZQ6CUFx4z5HayZMxdc6MZQWDt2rXmxBNP9D/4umkppjTh0AdZop1UWjnXhzoogwYNMqNGjfKzFB1DorZOtHX2jjvu8D/2Lp8jBNJBoKDgf/2o5eVVT0d39AGBjCUghZS+tU60yquogE4U4fXtt9828RRRZ511lnnllVds9XXr1vnR/lz7WEetNstk0E0YpDDTdbdv326r60e+IiR16dIlVnPyIJBTBBivcup187BFJCD/t9581/o3XLJkSczWGmvkc1F+q5zIN5VTGClPPhe1C6phw4auStxjMte87bbbjHZsOSlfvrx1ph6c68iflaxMnGLL1eUIgVwhwM6qXHnTu+A5tTouh4Va+XbKJq3IO0VVs2bN7G6rSEWVbnXkyJH24+zCm+vDrT9NWBSNQ6vtUmbx8d4FL5ZLQgACOUVgxIgR5r777vOdzjpFlb6/3bp1M++//35cRZVAuch9UmoddNBBSbGT30M5WZdD99KlS9sf8E5RVadOHeuzCkVVUiipBAEIQCCnCbi5ghbI44mcmS9evNgunrt6TlElv4jabSULkWQUVbpGMtccPHiwjbT7t7/9zd6WfEA6RdXBBx9snnzySSMfWq6vePdOPgSymQA7q7L57e5Gz6ZtrYreJIfqCjOu6E3JRtJQlI7ly5fbXVgaJAhTvhu92Cy+FVaqs/jl8mgpEZCySNGLtGtWK85aOIgXNSmlC8RppB/wCtQhfyEyN9QiBj/e48AiOycJMF7l5GvnoUuIgMYc7e7V/ENjjhZInDl8CV3Sjqtu15d2KUtZhUAAAsagrOK/AghAAAIxCPDjPwYUsiAAAQhAYLcjwHi1270SbggCEIAABNJAADPANECkCwhAAAIQgAAEIAABCEAAAhCAAAQgAIH0EEBZlR6O9AIBCEAAAhCAAAQgAAEIQAACEIAABCCQBgIoq9IAkS4gAAEIQAACEIAABCAAAQhAAAIQgAAE0kMAZVV6ONILBCAAAQhAAAIQgAAEIAABCEAAAhCAQBoIoKxKA0S6gAAEIAABCEAAAhCAAAQgAAEIQAACEEgPAZRV6eFILxCAAAQgAAEIQAACEIAABCAAAQhAAAJpIICyKg0Q6QICEIAABCAAAQhAAAIQgAAEIAABCEAgPQRQVqWHI71AAAIQgAAEIAABCEAAAhCAAAQgAAEIpIFAafVRULAmDV3RBQQgAIHsI8D3MfveKU8EAQhAIBsJMF5l41vlmSAAAQjkLgF2VuXuu+fJIQABCEAAAhCAAAQgAAEIQAACEIDAbkfA7qzKy6u+290YNwQBCEBgVxJwK9R8H3flW+DaEIAABCBQGAHGq8IIUQ4BCEAAAplIgJ1VmfjWuGcIQAACEIAABCAAAQhAAAIQgAAEIJClBFBWZemL5bEgAAEIQAACEIAABCAAAQhAAAIQgEAmEkBZlYlvjXuGAAQgAAEIQAACEIAABCAAAQhAAAJZSgBlVZa+WB4LAhCAAAQgAAEIQAACEIAABCAAAQhkIgGUVZn41rhnCEAAAhCAAAQgAAEIQAACEIAABCCQpQRQVmXpi+WxIAABCEAAAhCAAAQgAAEIQAACEIBAJhJAWZWJb417hgAEIAABCEAAAhCAAAQgAAEIQAACWUoAZVWWvlgeCwIQgAAEIAABCEAAAhCAAAQgAAEIZCIBlFWZ+Na4ZwhAAAIQgAAEIAABCEAAAhCAAAQgkKUEUFZl6YvlsSAAAQhAAAIQgAAEIAABCEAAAhCAQCYSKJ2JN809ZxaBuXPnmrFjx5pPP/3UrFq1ylSvXt00bdrUXHvttea4446L+zA7duwwTz/9tJkwYYL58ssvzZ9//mmaNWtmmjdvbvr162cqVaoUty0FEIAABCCQPgK//fabGTlypJkzZ45ZtGiR7bh27dqmR48e5vLLLzd77bVXUhcLhUKmdevWtp8XXnjBnHPOOXHbqd8tW7bELVdBkyZN7FiSsBKFEIAABCCQswRmzZpl2rdvb+rXr++PX7FgzJgxwzz22GOxisLy7rzzTpOXlxeWpznKAw88YKZNm2aWLVtmtm7dao466ig7b7nllltM1apVw+q7k3SNra4/jhDINgKlZs+eHWrZsmW2PRfPs5sQuPHGG81dd91lpHiKJbfffrv55z//GVWkj36nTp3Mq6++GlWmDCm5pk+fbg444ICY5WRCoLgECgrW2C7y8qoXtyvaQyCjCXz22WfmvPPOs4sGsR6kTp069nt8xBFHxCoOyxsyZIgZMWKEzXvuuedsv2EV/nuycePGuD/ug/U7duxoJwfBPNIQyDUCjFe59sZ53mQJrF692rRo0cKsWbPG1K1b1yxZsiRu0759+5oxY8bELXcFCxcuNI0bN3anZvPmzeaUU04xGitjSZUqVczkyZPtQk2wPJ1ja7Bf0hDIJgLsrMqmt7mbPYtWJ0aPHm3vas899zTXXHONkWL0u+++s/krV640N910k9l3331Nnz59wu5+0KBBvqKqUaNGdidVhQoVzMSJE83LL79sFixYYNq1a2ePpUqVCmvLCQQgAAEIpIfA77//bs4991yzfPly26G+x/pBf+CBB5rXX3/dPPTQQ1aJpR/qX3zxRdwdVlqAGDp0qNECRTKinbhOatSoYSpWrOhOw441a9YMO+cEAhCAAAQgIAKLFy82nTt3toqqZIh88skntprGG4078SRyPOrZs6evqDr++OPNDTfcYK0/XnzxRfPII4+YH374wVxwwQX2ftwie7rG1nj3SD4EsoaAdlYhEEg3Ae/DHNp///1D3v8ooT322CP05ptvhl3ixx9/DDVo0MCWV65cOeStovvl69atC5UvX96WNWzYMPTTTz/5Zd4OrZBnGmLL1PfMmTP9MhIQSCeB/PyCkP4QCOQygeHDh/vf2w4dOoQ8k4UwHA8//LBfPnjw4LAyd+KtQoeOOeYYv56+3frzdla5KlFHb6HDr+8tbESVkwEBCPwfAcar/2NBCgKeIijkLY6EypQp448jGnO8nVVx4fz111+hvffe29a/6KKL4taLLPAW4P1rHHvssaHt27eHVfF2E/vl9957r1+WjrHV74wEBLKYAA7Wva8Xkn4CH374ofn+++9tx1dccYVp06ZN2EW0m0rmgRJPcWV3S7kK8lO1bds2e6odV/vss48rMtpFddtttxnt1JIks13Xb0wCAhCAAASKROC1116z9b0FBDNu3DijY1C0onziiSfarCeffDJYZNPaSSW/Um6nVNmyZaPqxMpw9ffbb7+EK9yx2pIHAQhAAAK5SUBWG3IVMmzYMPPHH3+Y0qVL27lD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++8fWrVqlV991KhR/lh1/fXX+/ku8cknn4TKlStn6+Tl5bnsEPMZHwUJCCQkgIP1+Ho8SpIg4E0irNndsGHDjFbYS5cubQrbzaSViUcffdT2fsghh5iLLroo7EqeEspccMEFNk++rIIr7PJT5cwG+/TpY2Q37kTXve2228yee+5ps7StF4EABCAAgZIhMHXqVHPPPffYzrVrSrtig+L9iLen1apVM0899VTU2OD9sPerz5s3z08r4b772l2rnVUIBCAAAQhAoDACqcxLEvWpuY386MrsT/OMSZMmmSOOOMJv8s4779j03nvvbYYPH+7nu4R2U2mnlaSgoMDIxF3CfMZi4B8IFEoAZVWhiKiQiIAcqH/++ee2ij7ecqBbmA80baXVtlmJlFIyA4yUHj16+Fne6ryffv/99226bNmydtutX/DfxEEHHWSd9upUPq22b98eWYVzCEAAAhAoJoFffvnFaMFA4u12tcEu3EKB8jQufPjhh0qaG264Iab/KZkIyr/hb7/9ZgYPHmzrun+csurYY491WRwhAAEIQAACCQmkMi9J1KH8MM6fP99WkR/dyOBPckNy1FFHmaZNmxqlY4kWbJx89913Nsl8xhHhCIHEBPBZlZgPpUkQ0EdYk5HevXubvfbaq9AWigblJF50DEV4chJ00u7ayi9KvAhSaqvIHnJcuHz58kLt0N11OEIAAhCAQHIEbr31VuN+dCuiX9BXlXpQpFcnUkpJtEKtb3h+fr45+uijrVP1Qw891FXzj1JeKcqr5Pjjj7eLIHPmzDFff/218cwojFaqFXE2mfHG75QEBCAAAQjkBIGizkviQfn222/93VIKNuJ2CwfrT548OXgaM+0CjGihXYotCfOZmKjIhEAUAZRVUUjIKAoBTRg82227sp5su2BkqXgR+2ROWKlSJaPVe628O3Ft47VTPZmNOFHbwpwmurocIQABCECgcAL65t9///22onbUDhw4MKpR8LstM75evXqZZ5991vz6669+XZmBez4LbUAMP9NLyCnuX3/9ZbNGjhxp9BcpUo49/vjjpnnz5pFFnEMAAhCAQI4SSGVeEg/VkCFD7DxE5XIzEpxfxGsTma9AIk5ZpcUXKawkzGciSXEOgdgEou2vYtcjFwIxCWhlWyYgRRFnAqg2nqPCuE3doOAmN9oppYgaybZTPdfWNuIfCEAAAhAo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Dhwo27dvD7RTrSkfN26c3HXXXYHif/DBB268Jk2aSM2aNd3v3oWioiLvV5YRQAABBEIKlOW5+/7775uj6rNan9l+oeSzfMyYMTJ37lwTvV27dqYlVY0aNeTpp5+WOXPmyPLly6VXr17ms1KlSn67ZT0CCCCAQEQEvvjiC7nssstk165d5or79+8vgwcPlrp168rSpUvlvvvukwMHDpjPM844Q37+85+7Mjt27DDvL4cOHRKnYEpGjRolXbt2lfXr18s999wjn3/+uWgL43r16pl4bkJnIWx+FTad99gsI5DzArSsytFiyAq+rG+++SbmFDrFqlSpElcjkaplldakO5lFXHznP1zKllVOhuHG37JlSwVfJYeLkgA11VG621xrKoGwz93vv/8+VqtWLfPMHjJkSKpDxG3buXOnW7vdpk2bmPMC4m53ukzEnBcGNx9YsGCBu40FBKIqQH4V1TvPdXsFJk2a5OYNv/rVr7ybzLJTeRKrVq2aieN0O4/b7hROuWmdrutx21atWhVzCrzM9s6dO8dtC5tfhU0Xd3C+IBABAQZYz/niyKN/gU6hkThdMmT8+PHiNGmVvLw8Ka2mW1tS6bhStsa+atWqgU7UxteajVS19IF2RiQEEEAAgVIFwj53P/roI3d8Qc0jggYdp0prtzVcf/31UqdOHTep5i133nmnHHPMMWbdlClT3G0sIIAAAghEV2DRokXm4p1KErnjjjsSILQ1lba00lBcXCxOV3KzrONGPfroo2a5YcOG4lSumGX7j1NpIldccYX5qmNZ2TxRV4TNr8Kms+fEJwJREaCwKip3+ihepw6gvmbNGnOExo0by5IlS6Rbt24pj+iMS2UGy9VIOlDuiy++mDK+3WgziB//+Md2FZ8IIIAAAkdRIOxz16bTU0unsOrtt982V6OVGNqlo2RwxiMxE3Loeu0qePjw4ZJR+I4AAgggEDEB7SrevHlz6dixo+hystCgQQN39aeffmqW161bJ9qFUIMWSmk3wJLh8ssvd1c9//zz7nLY/CpsOvfALCAQEQHGrIrIjT7al6kP/1//+tcybNgwOfbYY0s9nNaOO4OgizOwupx11llia0NSJfz666/NjFAaR9NooZjOHqi19zqLlNaY6AyEQY6f6jhsQwABBBD4r0BZnrt2vCptBaUVGTqr39q1a8XpNi5t27aVLl26iNZY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)\n",
        "\n",
        "**Bonus:** The point where the two curves intersect is called the equilibrium point.  Can you find the point and plot it?\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DbKQPSA-IAUx"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jla7VT0qH7vu"
      },
      "source": [
        "**Question 27:** Given below are two dictionaries that capture the satisfaction and price of various chocolates.  Add code that finds the chocolate that has the most value for money.  \n",
        "\n",
        "*Note:* the code should work even if I change the dictionaries."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8cxXWfG5IA6h"
      },
      "source": [
        "price = {'Diary milk':60, 'Kitkat':40, 'Munch':25, 'Ferrero Rocher':300, 'Bournville':110, 'Gems':30}\n",
        "satisfaction = {'Diary milk':40, 'Kitkat':25, 'Munch':9, 'Ferrero Rocher':100, 'Bournville':60, 'Gems':20}"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M8OdrrqMH9un"
      },
      "source": [
        "**Question 28:** Write a function that helps you decide whether you should buy the smaller or bigger cup of coffee from the tuck shop.  This should take two tuples as input - the first tuple represents the volume (in ml) and price (in Rs) of the smaller cup and the second tuple represents the volume and price of the bigger cup.  The function should return True if the price per ml for the smaller cup is greater than or equal to 1.5 times the price per ml for the bigger cup.  Else, it should return False\n",
        "\n",
        "**Bonus:** Notice that someone else might prefer to buy if the benifit is lesser - less than 1.5. Modify the the function to take a third parameter which captures this amount."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RMqaSdKzIBke"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YVFbUdVCNvbb"
      },
      "source": [
        "**Question 29:** When I was in school, we used to play a very simple game of cricket.  Take a book and open a random page.  Your score is the last digit of the page you open - and you are out if the digit is zero.  Create this game in Python.  \n",
        "1. Choose a random element from - 0,1,2,3,4,5,6, OUT.\n",
        "2. If the chosen element is out, say you are out and display the score.\n",
        "3. Else, update the score and return to step 1."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jJ1I4JtSN0mb"
      },
      "source": [
        "**Question 30:** When I was in school we used to play a version of cricket.  The bowler will secretly write one of the alphabets - A,B,C,D,E,F,G.  Then the batsman has to say one of the alphabets.  The Batman is out if he says the alphabet written by the bowler - else he will score.  The score is given by the cyclic distance between the two alphabets\n",
        "\n",
        "Examples: Let us say the bowler writes A.  If the batsman says D, batsman will score 3 runs.  And if he says G, it is a six.\n",
        "\n",
        " Let us say the bowler writes G.  If the batsman says A, he scores 1 run.  If the batsman says F, it is a six.\n",
        "\n",
        "Create a bowling algorithm:\n",
        "1. Generate a random element from the list A,B,C,D,E,F,G\n",
        "2. Ask for an input from the user\n",
        "3. If the input provided by the user is same as the random element generated, say you are out and display the score.\n",
        "4. Else, update the score and return to step 1.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kGPNp-cC_2ZI"
      },
      "source": [
        "# Exam 2"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1P1rwIMaYui-"
      },
      "source": [
        "**Question 1:(1 mark)** Add code to print all elements in the list l of length less than 5.  For example, car should be printed, but apple should not be."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-ae9QTbYGtK1"
      },
      "source": [
        "l = ['apple', 'car', 'camp', 'banana', 'ant', 'crow', 'parrot', 'cow', 'elephant', 'elf', 'a', 'in', 'hippopotamus']"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RUq5hwYuYt4h"
      },
      "source": [
        "**Question 2:(1 mark)** Add code that converts the first letter of every string in the list to upper case.  For example, apple should be converted to Apple."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cblf-OXNGxlx"
      },
      "source": [
        "l = ['apple', 'car', 'camp', 'banana', 'ant', 'crow', 'parrot', 'cow', 'elephant', 'elf', 'a', 'in', 'hippopotamus']"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "J6j3fSLfYtNz"
      },
      "source": [
        "**Question 3:(2.5 mark)** Define a function that takes a list l and an integer n as input and returns the n th largest number in the list.     \n",
        "\n",
        "For example, if l is [3,1,7,4,9,12,5] and n = 3, then the function returns 7 as 12 > 9 > 7.  \n",
        "\n",
        "Set the default value of n as 1 - that is, by default, the function returns the largest value."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yxWM_p1EYkYE"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "SIkOQGXdYnd0"
      },
      "source": [
        "**Question 4:(2.5 mark)** Plot the graph of $f(x) = x^2 - 3x + 2$.  Make sure to:\n",
        "1. plot the x and y axes\n",
        "2. the curve has red colour\n",
        "3. in the graph x-cordinates vary from 0 to 3 and y-coordinate vary from -2 to 2   "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "F4virCOfGq4t"
      },
      "source": [],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ruagstJTYz7s"
      },
      "source": [
        "**Question 5:(3 mark)**. While playing many games, we need to find one person who will be 'it'.  Typically, people use some song for the purpose, but we will just count till ten.  The person who is 10, is safe and the process is repeated with the rest of the people - till only one person is left.  \n",
        "\n",
        "For example, let us assume amar, akbar, antony, seeta and geeta are playing.  Then, geeta, akbar, amar, and seeta will be safe in that order.  Thus, antony will be it.  \n",
        "\n",
        "Define a function that takes a list of names as input and returns the name of the 'it'."
      ]
    }
  ]
}