diff --git a/s24/AmFam_Ashwin/23_Function_References/23_Function_References.pdf b/s24/AmFam_Ashwin/23_Function_References/23_Function_References.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ab0111aa621f0c95a992dc3781192e4befdf9ca6 Binary files /dev/null and b/s24/AmFam_Ashwin/23_Function_References/23_Function_References.pdf differ diff --git a/s24/AmFam_Ashwin/23_Function_References/23_Function_References.pptx b/s24/AmFam_Ashwin/23_Function_References/23_Function_References.pptx new file mode 100644 index 0000000000000000000000000000000000000000..d37de2d96eac827735e46af205f0086fd7d9a1bc Binary files /dev/null and b/s24/AmFam_Ashwin/23_Function_References/23_Function_References.pptx differ diff --git a/s24/AmFam_Ashwin/23_Function_References/Lecture Code/Lec_23_Function_References_Solution.ipynb b/s24/AmFam_Ashwin/23_Function_References/Lecture Code/Lec_23_Function_References_Solution.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..f2910e7b3afc0a422c5275a6f6111ace2dddf64f --- /dev/null +++ b/s24/AmFam_Ashwin/23_Function_References/Lecture Code/Lec_23_Function_References_Solution.ipynb @@ -0,0 +1,1027 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1: Complete the recursive function\n", + "\n", + "Write a function that prints nested lists with indenting" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "road bike\n", + "<class 'list'>\n", + "\tPB&J\n", + "\tbrownies\n", + "\tspaghetti\n", + "\tapples\n", + "<class 'tuple'>\n", + "\tBrooks Ghost 13\n", + "\thoodie\n", + "\tgloves\n", + "macbook air\n", + "<class 'list'>\n", + "\tJohndee.com\n", + "\thttps://www.weather.gov/mkx/\n", + "<class 'list'>\n", + "\tA\n", + "\tK\n", + "\t<class 'tuple'>\n", + "\t\tS\n", + "\t\tD\n", + "\t\tK\n" + ] + } + ], + "source": [ + "fav_stuff = [ \"road bike\",\n", + " [\"PB&J\", \"brownies\", \"spaghetti\", \"apples\"] , \n", + " (\"Brooks Ghost 13\", \"hoodie\", \"gloves\"), \n", + " \"macbook air\", \n", + " [ \"Johndee.com\", \"https://www.weather.gov/mkx/\"],\n", + " [\"A\", \"K\", (\"S\", \"D\", \"K\")]\n", + " ]\n", + "\n", + "def print_with_indenting(directory, indent_level):\n", + " for subitem in directory:\n", + " if type(subitem) == list or type(subitem) == tuple:\n", + " print(\"\\t\" * indent_level + str(type(subitem)))\n", + " # TODO: make recursive call\n", + " print_with_indenting(subitem, indent_level + 1)\n", + " else:\n", + " print(\"\\t\" * indent_level + str(subitem))\n", + " \n", + "print_with_indenting(fav_stuff, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[PythonTutor Link](https://pythontutor.com/visualize.html#code=def%20mystery%28a,%20b%29%3A%20%0A%23%20precondition%3A%20assume%20a%20%3E%200%20and%20b%20%3E%200%0A%20%20%20%20if%20b%20%3D%3D%201%3A%20%0A%20%20%20%20%20%20%20%20return%20a%3B%0A%20%20%20%20return%20a%20*%20mystery%28%20a,%20b%20-%201%20%29%0A%0A%23%20make%20a%20function%20call%20here%0Amystery%287,%205%29&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 2a: Trace Recursion by hand\n", + "\n", + "What would be the result if we call `mystery(7, 5)`?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def mystery(a, b):\n", + " if b == 1: \n", + " return a\n", + " return a + mystery(a, b - 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[PythonTutor link](https://pythontutor.com/render.html#code=def%20mystery%28a,%20b%29%3A%0A%20%20%20%20if%20b%20%3D%3D%201%3A%20%0A%20%20%20%20%20%20%20%20return%20a%0A%20%20%20%20return%20a%20%2B%20mystery%28a,%20b%20-%201%29%0A%20%20%20%20%0Amystery%287,%205%29&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 2b: Trace Recursion by hand\n", + "\n", + "What would be the result if we call `mystery(-3, -1)`?" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "ename": "RecursionError", + "evalue": "maximum recursion depth exceeded", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mRecursionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# leads to infinite recursion - RecursionError\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m mystery(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)\n", + "Cell \u001b[1;32mIn[2], line 4\u001b[0m, in \u001b[0;36mmystery\u001b[1;34m(a, b)\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m b \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m: \n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m a\n\u001b[1;32m----> 4\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m a \u001b[38;5;241m+\u001b[39m mystery(a, b \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", + "Cell \u001b[1;32mIn[2], line 4\u001b[0m, in \u001b[0;36mmystery\u001b[1;34m(a, b)\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m b \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m: \n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m a\n\u001b[1;32m----> 4\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m a \u001b[38;5;241m+\u001b[39m mystery(a, b \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", + " \u001b[1;31m[... skipping similar frames: mystery at line 4 (2970 times)]\u001b[0m\n", + "Cell \u001b[1;32mIn[2], line 4\u001b[0m, in \u001b[0;36mmystery\u001b[1;34m(a, b)\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m b \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m: \n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m a\n\u001b[1;32m----> 4\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m a \u001b[38;5;241m+\u001b[39m mystery(a, b \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)\n", + "\u001b[1;31mRecursionError\u001b[0m: maximum recursion depth exceeded" + ] + } + ], + "source": [ + "# leads to infinite recursion - RecursionError\n", + "mystery(-3, -1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lecture 23: Functions are Objects!\n", + "\n", + "As we have learned previously, all variables in Python are stored as objects.\n", + "\n", + "This is also true for functions, and it gives us more power as programmers.\n", + "\n", + "**Learning Objectives:**\n", + "\n", + "- Define a function reference and trace code that uses function references.\n", + "- Explain the default use of `sorted()` on lists of tuples, and dictionaries.\n", + "- Sort a list of tuples, a list of dictionaries, or a dictionary using a function as a key.\n", + "- Use a `lambda` expression when sorting." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Function References\n", + "\n", + "Try this in Python Tutor:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 3\n" + ] + } + ], + "source": [ + "x = [1,2,3]\n", + "y = x\n", + "\n", + "def f(some_list): # what is f? its a function but also an object\n", + " return some_list[-1]\n", + "\n", + "z = f(y) # z stores the result of a call to f\n", + "\n", + "g = f # what is g? it is a reference to an object that is a function\n", + "\n", + "w = g(x) # calls the same function\n", + "\n", + "print(z, w)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Define a function reference and trace code that uses function references." + ] + }, + { + "attachments": { + "function%20reference.png": { + "image/png": "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eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY3MjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41MDI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KyigzMQAAQABJREFUeAHsvQecHbW5v69d914wxgYDS++9d9N77yHApV1ICNzwJwkpEEhIQpIbcj8phB/cwDW9995772B6NWDj3nvbvx6t313teOa0Pbvec/b7frw+c2YkjfRIM/rqlWZOTb03JxMBERABERABERABERCBNiJQ20bn0WlEQAREQAREQAREQAREIBCQAFVDEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAER6CwEHZfAqFGj3OWXX94MwKGHHuq22WabZvs6+pcFCxa4Cy64oBmGLbbYwh155JHN9umLCIiACIiACIhAYQQkQAvjVJWhvvjiC/enP/2pWdlWXXXVZS5A58+f76ZOneqWX355V1NT0yx/5fwye/ZsN2PGDDd48OCc50GAJjmdeOKJEqA5KoM6nDdvXmaITp06uZ49e2Yeb8kB6hSj7fTu3bslSbVaXNoejPr3799q52jLhBctWuQmTZrkevXqFf5a49xz5swJ1yvMunbtmnqKCRMmuC5durQKV87/3XffuR49erihQ4emnl87y0+gkHov/1mbUpw8eXK4lwwYMKBpp7bKQkACtCwYKzsRhMDTTz8dCoEAzbJvvvnG/eUvf3GvvvpqCHLZZZe5zTffPCt4Uftfeukld80117gHH3zQjR492i1evDgIlE022cT95je/cXvuuWdR6WUF/r//+z936623hjJwY8G6d+/uNtxwQ/fLX/7S4QFOGsetzP/4xz/cddddlwyi7wkCH3zwgXvuuecSe5u+9uvXz51wwglNO8q0NWvWLDdixIjG1M4666zG7WWxMXPmTPfpp5+6zTbbrPH0CPNrr73WMbA57LDD3EorrdR4rFI3pk+f7m655ZZwP9hhhx1apRiffPKJe/bZZ90hhxziVl555dRz3Hzzza6urs4deOCBqcdL3Ymwveuuu8Kgqm/fvo4BqKxtCMT1PmzYMMe9ZYUVVnCDBg1qkwzcf//9rra21n3/+99PPd9XX33l6uvr3WqrrZZ6XDuzCUiAZrPpMEf69Onjttpqq8zycgPAA4jwotM0wxtQLjv44IMdN3kzPGR4iRCme+21l/vv//5v95Of/MQOl/x50003ucceeyzEx0PWuXNnN3fu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bC8cSs2HBGgOct2HbeLW+WPuZ7SGnYjns7K9n/ayalBceeWVS71KhNfKsGi6WGNtJq+UMDMvo323T9bWlJK+xbepc77zJChPPacZT9ny2g6m9nn9B+XGe4ow5UnQrDWFrPOxV7EklwWknUf7REAEREAEREAEchOQAM3Np6qP8mqKpFjLWsxdCgje52e/JsFrS5iqaA2LBWiWyI3Py+J73sfIXyGG55VRrj3VSBxeVyITAREQAREQAREojYBew1QaN8UqgMAf//hH94tf/CI8nMR71njfW7kNLyvvkuN9kfy825133lnuUyg9ERABERABERCBMhOQB7TMQJVcEwFeMn3hhReGF8q3hvjkTDzBfu655waRm/WQUlOOtCUCIiACIiACItAeCMgD2h5qQXkQAREQAREQAREQgQ5EIP/jzR0IhooqAiIgAiIgAiIgAiLQ+gQkQFufsc4gAiIgAiIgAiIgAiIQEZAAjWBoUwREQAREQAREQAREoPUJSIC2PmOdQQREQAREQAREQAREICKgp+AjGNoUAREoDwHemTpv3rzMxDp16uT4AYLWMHv3bE1NjSvne23LmVd+FhZG/fv3L2eyyyStRYsWuUmTJrlevXqFv9bIBD8GQb3Ci18tS7MJEyY43vHbGkw5/3fffed69OgRfro37fzVum/y5MmhaPZjHNVaztYsV0duP7m4SoDmoqNjIiACJRH44IMPmv0KVjKRfv36uRNOOCG5u8XfZ82a5UaMGNGYzllnndW4vSw2eD/tp59+6jbbbLPG0yPMr7322vCLXIcddlh4TVnjwQrc4Gdtb7nlFrf55pu7HXbYoVVK8Mknn4Sf0D3kkEPcyiuvnHqOm2++2dXV1Tl+ua2chrC96667woCKn1488cQTy5l8u0/r4YcfDm21o5W7XBXT0dtPLo4SoLno6JgIiECrEGjJT6/myhBez/ZiiGGEC17YWIDyc678gAKmn3ZtL7WVnY+XX345iM/11lsvU/xmx9aRjk5A7Se7BUiAZrMJv0++eMGcEKK2czdXU9tpqdD1/rfEFy+c61+EXutqu3Rf6rh2iIAIODd8+PAwfWksmCrFmNY0McrU6qBBg8J+pnRtCp9pT34O1abW8Z4ypcXUINvLL7+8q63Nv5x94sSJburUqUH88etZK6ywQjgX/yEE8VRg5I2fqSX8lClTXJ8+fcK0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rANlSoZXMjE1JxOB9kKAtZOIJP60Trk8tcJT0qxz5Mnflkz1lyc3SkUERKCjEdAUfBE1vnjeDPfZ7/u6+vn8Nvyf/W/D/7SI2AoqAiIgAiIgAiIgAiIAAXlAi2gHU56/PIhPpuH7MR0vEwEREAEREAEREAERKJqAXsOUB9mCyV/5d3/e6GaPet7N+fyhELrvJqe4zv1XyhNTh0VABERABERABERABNIISICmUYn2LZjyrZv05K8a93RfeSe3wiF/bfyuDREQAREQAREQAREQgeIIaA1oHl4Lp45200fe42pqu7juK27sug3bzP/u+7J5R12erOqwCIiACIiACIiACFQEAQnQiqgmZVIEREAEREAEREAEqoeAHkKqnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3KpAiIgAiIgAiIgAhUDwEJ0OqpS5VEBERABERABERABCqCgARoRVSTMikCIiACIiACIiAC1UNAArR66lIlEQEREAEREAEREIGKICABWhHVpEyKgAiIgAiIgAiIQPUQkACtnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3KpAiIgAiIgAiIgAhUDwEJ0OqpS5VEBERABERABERABCqCgARoRVSTMikCIiACIiACIiAC1UNAArR66lIlEQEREAEREAEREIGKICABWhHVpEyKgAiIgAiIgAiIQPUQkACtnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3KpAiIgAiIgAiIgAhUDwEJ0OqpS5VEBERABERABERABCqCgARoRVSTMikCIiACIiACIiAC1UNAArR66lIlEQEREAEREAEREIGKICABWhHVpEyKgAiIgAiIgAiIQPUQkACtnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3tK5Pz5893v/nNb9xvf/vbnBl77bXX3K9//Wv30EMP5QyngyIgAiIgAiIgAh2LQOeOVdzylrZ+knOz/uRcfb1zfS7xaZeRJmkufMS5Be85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908G03cREAEREAERaFcE8BfJOigBnJSTN3FugfdYYjSGBf4vOByn+I1V/J+3uf/24U5r2GbE0tUL1UWv+bBTnZt2od/+xrm+/9twnP+7H+g9iV5MYvP9szDeOemI12Uj9jRYzRDbav65aHrz78V8m/U/Pq8vNcTAUcp5KeMC79lN2nS/NhUjm4SjzNgkn/ehk3z+i38GqCGBMvyPgOQBIR4mGjlypFuwYIG74oor3Lrrrut+/OMfNztD9+7dXZ8+fcK+CRMmuMmTJ5f0AFOzRPVFBERABERABFqZALpA1kEJBHHmxedALx5X9MpzsFdiK850rv+fvQBbrgFK/VjnpiwRnz0P9WG8MB34qHPL+88BlzeEmekF6sIlwo89vX385d5t+OtxVEOYXr9o2scx0ii3IT67beXckC+cW8GXZYj/G/yK37dP+pn6+Dwt75XnYP836K6mMPMeaNouZWudddZxvHLp2WefdYce6qEtsQsvvDDse/zxx21X6me9X0/w7rvvujfffNONGjXK7bfffiHc//5vpPKXxNx9993dRx99FP4uv3xJhaSm2rDzN7/5TcjDvffe2xhq8ODBYR/5Pe644xr3a0MEREAEREAEWouAPKCtRbZC0u33O++xPLUpszV+errnT5u+z76qyYPZ75rmayR7eGE64wcNM/Bz7/TCc7umeMtiiyWiAx9u7r3svLX37Pq/pDHy6v1rH3bJEKzrIV6oeg/tPO+xXfR1MnRx3zt16uR23HHHpSKtvPLKja87WupgtOOXv/ylY90nNnToUPfTn/7UPfjgg473fLbU1ltvvaWS6Nq1q9tpp52W2q8dIiACIiACItBaBCRAW4tshaTb85TcGeVhHgxv6bQT/X/eqxiMHd6WfLj5zzV8X5b/9/az04VOnXc7wIf1a11jC+8pRYB+F+9t++0ddtih2Unr6urCd94dykvu+/fv3+y4voiACIiACIhApRGQAK20GitzfrPWYtpp5t9nW00PFDXtadpavIxFGznp3PCDQ02ZyrHVeeWlD9b2WLLPRPbSQdpkj72Q3k7Gi+vNFi3y6wVkIiACIiACIlDhBCRAK7wCW5L9giofL6FfJ9rrSOf6+CfZs6w1X1/Ea5MKsdol61YLCVvfjlc/M4UvEwEREAEREIFqJlCQBqlmACpbbgJd9vJPkd/qZ979AsvaVXKHzXW0xubqMwLxHs5gs5cOsOirpfel7mERqEwEREAEREAERKDdE2jHfqB2z65DZLDrJg3FnONFKC+rL9Zq/bs1sXkvNnxm/V+7QsORBSObh6if5eM+1XyfvomACIiACIiACFQ2AQnQyq6/Vs89T8jjWGRZ5LT/8CJ0fPNT8vqlaSf5J+EzHkLqvFpD+Ln++IJnfTpLv0s9BOi8xLs6z79fdP7dfhfT7gv9y+LPb3ruqSEl/S8CIiACIiACIlDpBDQFX+k12Mr5rx3s3/f5f/5F9F5kzvHvx5zjPZXd1veitJ8Xil582sx6z6PTM9LtcC8gf9UgYifs0vDJbHuNF5zLj2qK0/Wgpu2J/tWZNiNf4PLPpsgdaGv06NHuhBNOaCzxuHHjwvaHH37oeD+o2V577eXOO+88+6pPERABERABEVjmBCRAl3kVLIMMLHmoOvkaoqycdP8P/7L2dfwL6XfzXkz/QNK8D5pC1vjNnv54J388zdi/gp9+51eKZt/W4M30jk3X6evmoXnx/SD/xP1E/0tEmAlP3lPKGlBedp83v0vKFRJowX95z9OCtAuJmushpPjYnDlz3JNPPrlUkjwpH++31zgtFVA7REAEREAERGAZEajxv7rC7KpMBAoisHiqF5Hf+D8vRHnnZu0w/1km4UcGWPO56Eufpm+VtV681nQtKFsKJAIiIAIiIAIiUEEEJEArqLKUVREQAREQAREQARGoBgJ6CKkaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UBAArQaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UBAArQaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UBAArQaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UCgczUUQmUoncDMmTPdI4884r744gs3b968kNApp5zihg4dWnqiiikCIiACIiACIiACOQhIgOaAU+2HPv74Y7f77ru70aNHNyvqvvvuKwHajIi+iIAIiIAIiIAIlJOABGg5aVZYWueff34Qn6ussoo74YQT3LrrrhtKsN5661VYSZRdERABERABERCBSiJQU++tkjKsvJaPQF1dnRs1apS78sor3WmnnVa+hJWSCIiACIiACIiACOQgIA9oDjjJQwtnTnTzRr/jOvUZ7LoNWd/V1HZKBqmo72PHjg353XzzzSsq38ps+ycwf/78xjXFabnt1KmT69mzZ9qhFu+bMWNGSKOmpsb17t27xem1RgKzZ892MOrfv39rJN+maVIW1pIPGDDAdenSpVXOPWfOHEe9wqtr165LnQOWU6dOdf369XPdunVb6nhLd0yaNCmkv/zyy7u+ffu2NLmKib9o0SJH2Xv16hX+KibjBWSUsn333XduwYIFbtiwYWVtux21vRSAvVkQCdBmONK/1M+f48bceqqbOfLGxgC13Z1bbte/uQkP/ZdzXoeu9Zu5rrZz+W98jScsw8b48ePdOuus05iSPXQ0fPhw17lzU1N46qmn3KabbtoYThsiUCyBDz74wD333HOZ0RAKLPsot82aNcuNGDGiMdmzzjqrcXtZbCDMPv30U7fZZps1np7r7tprrw0d32GHHeZWWmmlxmOVuDFy5Ej3yiuvuKOPPtoNHjy4VYrwySefuGeffdYdcsghbuWVV17qHF9//bV76KGH3B577OHKvYTozTffdC+88EI4J4P1HXbYYanzV+uO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Cpv1iyNGjAjTsHic8EjZU9LtJ6fKiQiIQDUSkAAtoFYnPvZ7N/3tS13fTc913Ydu7N3ai92Mt29yc0Y1vAR7ud1+VkAqCiICIlAqAdZO2oMvrI+StZwA6xxZo8qaTx4UWc2vweW1TMk1sS0/k1IQAREQgaUJaA3o0kyW2jPu7nPd1Jf/utR+518RuML+V7v+25609DHtEQEREAEREAEREAERSCUgAZqKpfnOxfNmuDlfvermffeeWzhzvKvxU/Hdll/H9VxjJ9e5/0rNA+ubCIiACIiACIiACIhATgISoDnx6KAIiIAIiIAIiIAIiEC5CTS95K7cKSs9ERABERABERABERABEUghIAGaAkW7REAEREAEREAEREAEWo+ABGjrsVXKIiACIiACIiACIiACKQQkQFOgaJcIiIAIiIAIiIAIiEDrEZAAbT22SlkEREAEREAEREAERCCFgARoChTtEgEREAEREAEREAERaD0CEqCtx1Ypi4AIiIAIiIAIiIAIpBCQAE2Bol0iIAIiIAIiIAIiIAKtR0ACtPXYKmUREAEREAEREAEREIEUAhKgKVC0SwREQAREQAREQAREoPUISIC2HlulLAIiIAIiIAIiIAIikEJAAjQFinaJgAiIgAiIgAiIgAi0HgEJ0NZjq5RFQAREQAREQAREQARSCEiApkDRLhEQAREQAREQAREQgdYjIAHaemyVsgiIgAiIgAiIgAiIQAoBCdAUKNolAiIgAiIgAiIgAiLQegQkQFuPrVIWAREQAREQAREQARFIISABmgJFu0RABERABERABERABFqPgARo67FVyiIgAiIgAiIgAiIgAikEJEBToGiXCIiACIiACIiACIhA6xGQAG09tkpZBERABERABERABEQghYAEaAoU7RIBERABERABERABEWg9AhKgrcdWKYvA/8/edYBJUTTROkFAkajkjBIkJ0lKEBEERAUBJUgQRNQfzKKCiiJJUVSCAqKACkgSRAFJAioCIklyzjknQZT563Vf783Nze7t7u3d7d5Vfd/szPR091S/mdl5U1XdLQgIAoKAICAICAKCgAsCQkBdQJEkQUAQEAQEAUFAEBAEBIHEQ0AIaOJhKzULAoKAICAICAKCgCAgCLggIATUBRRJEgQEAUFAEBAEBAFBQBBIPATCh4BuWp94rZSaBQFBQBAQBAQBQUAQEATC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RQJ5EKAAzQMOL5EACZBAQQlgyaXu3bubmdnwUPXs2VN69eolpUqVMovSP/XUUwUtms+RAAmQgOcJcAje813IBpAACcQjASy7tH79elO1p59+WqzgvO++++TDDz8060pigpBXZlvHI2PWScyKBvGwHBT7ggQiJUABGikx3k8CJEACYRDo3LmzVK9e3awxOWHCBHnzzTfN8kLYOQeGXXEoPsMAyVvyJJCSkpLndV4kgXglQAEarz3DepEACXiaQL169YwHdN68ebJx40YjRDETfciQIdKtWzcZPHiwp9vHypMACZBANAQoQKOhx2dJgARIIA8C2J5x4sSJedwR+lJ6erq89NJLoS9GcRZbS9ISiwBii7ET0muvvZZYDWNrEp4ABWjCdzEbSAIk4CUCdneev/3tb65XGzv9YKF2WuIQsLtJJU6L2JJkIcCdkJKlp9lOEiABEiCBhCMwadIks7lAampqwrWNDUpsAhSgid2/bB0JkAAJkAAJkAAJxB0BDsHHXZewQiRAAslMAMs3bdq0KWYIEDPIXXNihpcFkwAJhEmAAjRMULyNBEiABAqDwAcffCCzZs0SzKJ32w4dOmQmq1CAuk226MqbOnWqYLLbiBEjiq4SfDMJFIAABWgBoPEREiABEoglgTvuuEOwx7fbduONN7pdJMsrYgKffvqpmQVPAVrEHcHXR0yAW3FGjIwPkAAJkAAJkAAJkAAJREOAAjQaenyWBEiABEiABIqQAGKGY7FkVxE2qdBf/fLLL8v9998ve/fuNUe7Bi/WzQ137dyMjAzz7LJly2Ty5MkybNgw+fnnnwu9LV56IQWol3qLdSUBEiABEiABB4GSJUtKiRIlHGeYjZQANn6YP3++nDx50hxXrVplihg4cKD07t071+I2b94seBYG8Yoydu7cKfhS8P7771OA5krOd4ExoPkA4mUSIAESIAESiFcCX3zxhVSsWNHEgcZrHeO9XmXLljVVrFKlijmWKVMmrCo//PDDsnXrVjl9+rTYZ3BE4heD/BFSgObPiHeQAAmQAAmQQFwSmDBhghGfM2fOjMv6eaFSrVu3lho1ashNN90kmKjXqlWrsKqN7U+PHz8uxYoVE5QBa9GihckfPHiQnul8KFKA5gOIl0mABEiABEiABBKXQN++faV06dKmgePGjZNu3bpla+yuXbvko48+MtvYDho0SGrW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BEiABEiABEiABEigUAn4NjYt1FfyZSRAAiRAAiRAAiRAAslMgAI0mXufbScBEiABEvA0gQEDBsj48eM93QZWPjkJUIAmZ7+z1SRAAiRAAglAwC62nwBNYROSjABnwSdZh7O5JEACJEACiUOgQ4cOYW19mjgtZksShQAnISVKT7IdJEACJEACJEACJOARAhyC90hHsZokQAIkQAIkQAIkkCgEKEATpSfZDhIgARIggaQj8Morr8j8+fOTrt1ssPcJUIB6vw/ZAhIgARIggSQlsHjxYlm1alWStp7N9jIBClAv9x7rTgIkQAIkQAIkQAIeJMBJSB7sNFaZBEiABEiABEDg1KlTUrJkSalQoQKBkICnCFCAeqq7WFkSIAESIAESIAES8D4BDsF7vw/ZAhIgARIgARIgARLwFAEKUE91FytLAiRAAiRAAiRAAt4nQAHq/T5kC0iABEiABEiABEjAUwQoQD3VXawsCZAACZAACZAACXifAAWo9/uQLSABEiABEiABEiABTxGgAPVUd7GyJEACJEACJEACJOB9AhSg3u9DtoAESIAESIAESIAEPEWAAtRT3cXKkgAJkAAJkAAJkID3CVCAer8P2QISIAESIAESIAES8BQBClBPdRcrSwIkQAIkQAIkQALeJ/D/YGTIrvnogowAAAAASUVORK5CYII=" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Function references can be passed as arguments!\n", + "\n", + "[PythonTutor Link](https://pythontutor.com/visualize.html#code=def%20hammer%28%29%3A%0A%20%20%20%20print%28%22tap%20tap%20tap%22%29%0A%20%20%20%20%0Adef%20call_n_times%28f,%20n%29%3A%0A%20%20%20%20for%20i%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20f%28%29%0A%0Acall_n_times%28hammer,%203%29&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tap tap tap\n", + "tap tap tap\n", + "tap tap tap\n", + "churn churn churn\n", + "churn churn churn\n", + "churn churn churn\n", + "churn churn churn\n", + "churn churn churn\n" + ] + } + ], + "source": [ + "def hammer():\n", + " print(\"tap tap tap\")\n", + "\n", + "# TODO: define a function called screwdriver that prints \"churn churn churn\"\n", + "def screwdriver():\n", + " print(\"churn churn churn\")\n", + "\n", + "def call_n_times(f, n):\n", + " for i in range(n):\n", + " f()\n", + "\n", + "call_n_times(hammer, 3)\n", + "\n", + "# TODO: invoke `call_n_times` with `screwdriver` and `5` as arguments\n", + "call_n_times(screwdriver, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Your turn!\n", + "Calculate the distance between two points using either the manhattan or euclidean distance." + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "Source: https://www.researchgate.net/figure/Example-of-Euclidean-and-Manhattan-distances-between-two-points-A-and-B-The-Euclidean_fig8_333430988" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Review: NamedTuples\n", + "\n", + "We create a namedtuple `Point` with named attributes `x` and `y`. We then create lists of points we want to calculate distances between" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import namedtuple\n", + "\n", + "Point = namedtuple(\"Point\", [\"x\", \"y\"])\n", + "\n", + "left_points = [\n", + " Point(0, 0),\n", + " Point(3, 3),\n", + " Point(2, 2)\n", + "]\n", + "\n", + "right_points = [\n", + " Point(5, 5),\n", + " Point(0, 3),\n", + " Point(2, 2)\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Complete the function `calculate_distances`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We already did the math behind `manhattan_distance` and `euclidean_distance` for you!\n", + "\n", + "**Hint:** `distance_algo` should be a reference to a function that calculates distance between two points.\n", + "\n", + "Then, call calculate_distances measuring first in manhattan_distance, then euclidean_distance." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "def manhattan_distance(point1, point2):\n", + " dist_x = abs(point1.x - point2.x)\n", + " dist_y = abs(point1.y - point2.y)\n", + " return dist_x + dist_y\n", + " \n", + "def euclidean_distance(point1, point2):\n", + " dist_x = (point1.x - point2.x) ** 2\n", + " dist_y = (point1.y - point2.y) ** 2\n", + " return math.sqrt(dist_x + dist_y)\n", + "\n", + "def calculate_distances(distance_algo):\n", + " # TODO: use the `distance_algo` to find the distance between\n", + " # corresponding points in `left_points` and `right_points`\n", + " for i in range(len(left_points)):\n", + " left_point = left_points[i]\n", + " right_point = right_points[i]\n", + " print(distance_algo(left_point, right_point))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n", + "3\n", + "0\n" + ] + } + ], + "source": [ + "calculate_distances(manhattan_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7.0710678118654755\n", + "3.0\n", + "0.0\n" + ] + } + ], + "source": [ + "calculate_distances(euclidean_distance)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exploring the default use of `sorted()` on lists of tuples, and on dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `sort`/`sorted` takes in a second argument called `reverse`" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[99, 77, 55, 33, 22]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "populations = [55, 77, 33, 99, 22]\n", + "\n", + "# TODO: sort populations in reverse\n", + "sorted(populations, reverse=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 1: sorting lists of tuples" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Alicia', 'Spinnet', 13),\n", + " ('Angelina', 'Johnson', 13),\n", + " ('Fred', 'Weasley', 13),\n", + " ('George', 'Weasley', 13),\n", + " ('Harry', 'Potter', 11),\n", + " ('Katie', 'Bell', 12),\n", + " ('Oliver', 'Wood', 14)]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "quidditch_players = [(\"Oliver\", \"Wood\", 14),\n", + " (\"Angelina\", \"Johnson\", 13),\n", + " (\"Katie\", \"Bell\", 12),\n", + " (\"Alicia\", \"Spinnet\", 13),\n", + " (\"Fred\", \"Weasley\", 13),\n", + " (\"George\", \"Weasley\", 13),\n", + " (\"Harry\", \"Potter\", 11)\n", + " ]\n", + "\n", + "sorted(quidditch_players)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 2: define a function that returns a value from a tuple" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Malfoy'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def select0(some_tuple): # function must have exactly one parameter\n", + " return some_tuple[0]\n", + "\n", + "def select1(some_tuple):\n", + " return some_tuple[1]\n", + "\n", + "def select2(some_tuple):\n", + " return some_tuple[2]\n", + "\n", + "# Test these functions on the tuple (\"Draco\", \"Malfoy\", 11)\n", + "my_tuple = (\"Draco\", \"Malfoy\", 11)\n", + "select1(my_tuple)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 3: call `sorted` using the `key` argument" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Katie', 'Bell', 12),\n", + " ('Angelina', 'Johnson', 13),\n", + " ('Harry', 'Potter', 11),\n", + " ('Alicia', 'Spinnet', 13),\n", + " ('Fred', 'Weasley', 13),\n", + " ('George', 'Weasley', 13),\n", + " ('Oliver', 'Wood', 14)]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TODO: sort the list of tuples based on the last name\n", + "sorted(quidditch_players, key=select1)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Harry', 'Potter', 11),\n", + " ('Katie', 'Bell', 12),\n", + " ('Angelina', 'Johnson', 13),\n", + " ('Alicia', 'Spinnet', 13),\n", + " ('Fred', 'Weasley', 13),\n", + " ('George', 'Weasley', 13),\n", + " ('Oliver', 'Wood', 14)]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TODO: sort the list of tuples based on the age\n", + "sorted(quidditch_players, key=select2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using `lambda`\n", + "- `lambda` functions are a way to abstract a function reference\n", + "- lambdas are simple functions with:\n", + " - multiple possible parameters\n", + " - single expression line as the function body\n", + "- lambdas are useful abstractions for:\n", + " - mathematical functions\n", + " - lookup operations\n", + "- lambdas are often associated with a collection of values within a list\n", + "- Syntax: \n", + "```python \n", + "lambda parameters: expression\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 4: using `lambdas`" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Harry', 'Potter', 11),\n", + " ('Katie', 'Bell', 12),\n", + " ('Angelina', 'Johnson', 13),\n", + " ('Alicia', 'Spinnet', 13),\n", + " ('Fred', 'Weasley', 13),\n", + " ('George', 'Weasley', 13),\n", + " ('Oliver', 'Wood', 14)]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(quidditch_players, key=lambda each_tuple: each_tuple[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### The `lambda` function above is equialent to the following function:\n", + "\n", + "```python\n", + "def no_name(each_tuple):\n", + " return each_tuple[-1]\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 1: Sort the list by the length of the first name" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Fred', 'Weasley', 13),\n", + " ('Katie', 'Bell', 12),\n", + " ('Harry', 'Potter', 11),\n", + " ('Oliver', 'Wood', 14),\n", + " ('Alicia', 'Spinnet', 13),\n", + " ('George', 'Weasley', 13),\n", + " ('Angelina', 'Johnson', 13)]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "sorted(quidditch_players, key=lambda x: len(x[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2: Sort the list by the length of their full name" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Katie', 'Bell', 12),\n", + " ('Oliver', 'Wood', 14),\n", + " ('Fred', 'Weasley', 13),\n", + " ('Harry', 'Potter', 11),\n", + " ('Alicia', 'Spinnet', 13),\n", + " ('George', 'Weasley', 13),\n", + " ('Angelina', 'Johnson', 13)]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "sorted(quidditch_players, key=lambda player: len(player[0]) + len(player[1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### OK, I can sort a list of tuples....what about a list of dictionaries?" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Calvin', 'year': 2000},\n", + " {'name': 'Blanc', 'year': 1990, 'speed': 250},\n", + " {'name': 'Alexandria', 'year': 1980, 'speed': 100}]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hurricanes = [\n", + " {\"name\": \"Calvin\", \"year\": 2000},\n", + " {\"name\": \"Alexandria\", \"year\": 1980, \"speed\": 100},\n", + " {\"name\": \"Blanc\", \"year\": 1990, \"speed\": 250},\n", + "]\n", + "\n", + "# call sorted on hurricanes and use a lambda expression to grab the year\n", + "sorted(hurricanes, key=lambda d: d[\"year\"], reverse=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3: Sort hurricanes alphabetically by name" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Alexandria', 'year': 1980, 'speed': 100},\n", + " {'name': 'Blanc', 'year': 1990, 'speed': 250},\n", + " {'name': 'Calvin', 'year': 2000}]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "sorted(hurricanes, key = lambda d : d[\"name\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 4: Sort hurricanes alphabetically by speed" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Calvin', 'year': 2000},\n", + " {'name': 'Alexandria', 'year': 1980, 'speed': 100},\n", + " {'name': 'Blanc', 'year': 1990, 'speed': 250}]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "sorted(hurricanes, key=lambda d: d.get(\"speed\", 0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### This is all great, but what I'd really like to do is to sort dictionaries!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `sorted(dict)` returns a list of the keys sorted" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ala mode', 'cookie', 'donut', 'hot dog', 'loaf', 'milk', 'pie']" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "menu = { 'pie': 3.95, \n", + " 'ala mode':1.50, \n", + " 'donut': 1.25, \n", + " 'cookie': 0.79, \n", + " 'milk':1.65,\n", + " 'loaf': 5.99,\n", + " 'hot dog': 4.99}\n", + "\n", + "sorted(menu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### But we can make progress on this by using the `.items()` method " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_items([('pie', 3.95), ('ala mode', 1.5), ('donut', 1.25), ('cookie', 0.79), ('milk', 1.65), ('loaf', 5.99), ('hot dog', 4.99)])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "menu.items()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### We can sort `menu.items()` the same way we sorted list of tuples" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('ala mode', 1.5),\n", + " ('cookie', 0.79),\n", + " ('donut', 1.25),\n", + " ('hot dog', 4.99),\n", + " ('loaf', 5.99),\n", + " ('milk', 1.65),\n", + " ('pie', 3.95)]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(menu.items(), key=lambda t: t[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### And we can turn this list of tuples into a dict" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ala mode': 1.5,\n", + " 'cookie': 0.79,\n", + " 'donut': 1.25,\n", + " 'hot dog': 4.99,\n", + " 'loaf': 5.99,\n", + " 'milk': 1.65,\n", + " 'pie': 3.95}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict(sorted(menu.items(), key=lambda thing: thing[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 5: Can you change the previous code to sort by price?" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'cookie': 0.79,\n", + " 'donut': 1.25,\n", + " 'ala mode': 1.5,\n", + " 'milk': 1.65,\n", + " 'pie': 3.95,\n", + " 'hot dog': 4.99,\n", + " 'loaf': 5.99}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "dict(sorted(menu.items(), key=lambda thing: thing[1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 6: Can you change the previous code to sort by the length of the name?" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'pie': 3.95,\n", + " 'milk': 1.65,\n", + " 'loaf': 5.99,\n", + " 'donut': 1.25,\n", + " 'cookie': 0.79,\n", + " 'hot dog': 4.99,\n", + " 'ala mode': 1.5}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "dict(sorted(menu.items(), key=lambda thing: len(thing[0])))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/s24/AmFam_Ashwin/23_Function_References/Lecture Code/Lec_23_Function_References_Template.ipynb b/s24/AmFam_Ashwin/23_Function_References/Lecture Code/Lec_23_Function_References_Template.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..141bd5a42fcc08450a081557aeebfd000bfa65e3 --- /dev/null +++ b/s24/AmFam_Ashwin/23_Function_References/Lecture Code/Lec_23_Function_References_Template.ipynb @@ -0,0 +1,650 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1: Complete the recursive function\n", + "\n", + "Write a function that prints nested lists with indenting" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fav_stuff = [ \"road bike\",\n", + " [\"PB&J\", \"brownies\", \"spaghetti\", \"apples\"] , \n", + " (\"Brooks Ghost 13\", \"hoodie\", \"gloves\"), \n", + " \"macbook air\", \n", + " [ \"Johndee.com\", \"https://www.weather.gov/mkx/\"],\n", + " [\"A\", \"K\", (\"S\", \"D\", \"K\")]\n", + " ]\n", + "\n", + "def print_with_indenting(directory, indent_level):\n", + " for subitem in directory:\n", + " if type(subitem) == list or type(subitem) == tuple:\n", + " print(\"\\t\" * indent_level + str(type(subitem)))\n", + " # TODO: make recursive call\n", + " else:\n", + " print(\"\\t\" * indent_level + str(subitem))\n", + " \n", + "print_with_indenting(fav_stuff, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[PythonTutor Link](https://pythontutor.com/visualize.html#code=def%20mystery%28a,%20b%29%3A%20%0A%23%20precondition%3A%20assume%20a%20%3E%200%20and%20b%20%3E%200%0A%20%20%20%20if%20b%20%3D%3D%201%3A%20%0A%20%20%20%20%20%20%20%20return%20a%3B%0A%20%20%20%20return%20a%20*%20mystery%28%20a,%20b%20-%201%20%29%0A%0A%23%20make%20a%20function%20call%20here%0Amystery%287,%205%29&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 2a: Trace Recursion by hand\n", + "\n", + "What would be the result if we call `mystery(7, 5)`?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def mystery(a, b):\n", + " if b == 1: \n", + " return a\n", + " return a + mystery(a, b - 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 2b: Trace Recursion by hand\n", + "\n", + "What would be the result if we call `mystery(-3, -1)`?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lecture 23: Functions are Objects!\n", + "\n", + "As we have learned previously, all variables in Python are stored as objects.\n", + "\n", + "This is also true for functions, and it gives us more power as programmers.\n", + "\n", + "**Learning Objectives:**\n", + "\n", + "- Define a function reference and trace code that uses function references.\n", + "- Explain the default use of `sorted()` on lists of tuples, and dictionaries.\n", + "- Sort a list of tuples, a list of dictionaries, or a dictionary using a function as a key.\n", + "- Use a `lambda` expression when sorting." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Function References\n", + "\n", + "Try this in Python Tutor:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x = [1,2,3]\n", + "y = x\n", + "\n", + "def f(some_list): # what is f? its a function but also an object\n", + " return some_list[-1]\n", + "\n", + "z = f(y) # z stores the result of a call to f\n", + "\n", + "g = f # what is g? it is a reference to an object that is a function\n", + "\n", + "w = g(x) # calls the same function\n", + "\n", + "print(z, w)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Define a function reference and trace code that uses function references." + ] + }, + { + "attachments": { + "function%20reference.png": { + "image/png": "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eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY3MjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41MDI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KyigzMQAAQABJREFUeAHsvQecHbW5v69d914wxgYDS++9d9N77yHApV1ICNzwJwkpEEhIQpIbcj8phB/cwDW9995772B6NWDj3nvbvx6t313teOa0Pbvec/b7frw+c2YkjfRIM/rqlWZOTb03JxMBERABERABERABERCBNiJQ20bn0WlEQAREQAREQAREQAREIBCQAFVDEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAERkABVGxABERABERABERABEWhTAhKgbYpbJxMBERABERABERABEZAAVRsQAREQAREQAREQARFoUwISoG2KWycTAREQAREQAREQARGQAFUbEAEREAEREAEREAERaFMCEqBtilsnEwEREAEREAEREAER6CwEHZfAqFGj3OWXX94MwKGHHuq22WabZvs6+pcFCxa4Cy64oBmGLbbYwh155JHN9umLCIiACIiACIhAYQQkQAvjVJWhvvjiC/enP/2pWdlWXXXVZS5A58+f76ZOneqWX355V1NT0yx/5fwye/ZsN2PGDDd48OCc50GAJjmdeOKJEqA5KoM6nDdvXmaITp06uZ49e2Yeb8kB6hSj7fTu3bslSbVaXNoejPr3799q52jLhBctWuQmTZrkevXqFf5a49xz5swJ1yvMunbtmnqKCRMmuC5durQKV87/3XffuR49erihQ4emnl87y0+gkHov/1mbUpw8eXK4lwwYMKBpp7bKQkACtCwYKzsRhMDTTz8dCoEAzbJvvvnG/eUvf3GvvvpqCHLZZZe5zTffPCt4Uftfeukld80117gHH3zQjR492i1evDgIlE022cT95je/cXvuuWdR6WUF/r//+z936623hjJwY8G6d+/uNtxwQ/fLX/7S4QFOGsetzP/4xz/cddddlwyi7wkCH3zwgXvuuecSe5u+9uvXz51wwglNO8q0NWvWLDdixIjG1M4666zG7WWxMXPmTPfpp5+6zTbbrPH0CPNrr73WMbA57LDD3EorrdR4rFI3pk+f7m655ZZwP9hhhx1apRiffPKJe/bZZ90hhxziVl555dRz3Hzzza6urs4deOCBqcdL3Ymwveuuu8Kgqm/fvo4BqKxtCMT1PmzYMMe9ZYUVVnCDBg1qkwzcf//9rra21n3/+99PPd9XX33l6uvr3WqrrZZ6XDuzCUiAZrPpMEf69Onjttpqq8zycgPAA4jwotM0wxtQLjv44IMdN3kzPGR4iRCme+21l/vv//5v95Of/MQOl/x50003ucceeyzEx0PWuXNnN3fu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bC8cSs2HBGgOct2HbeLW+WPuZ7SGnYjns7K9n/ayalBceeWVS71KhNfKsGi6WGNtJq+UMDMvo323T9bWlJK+xbepc77zJChPPacZT9ny2g6m9nn9B+XGe4ow5UnQrDWFrPOxV7EklwWknUf7REAEREAEREAEchOQAM3Np6qP8mqKpFjLWsxdCgje52e/JsFrS5iqaA2LBWiWyI3Py+J73sfIXyGG55VRrj3VSBxeVyITAREQAREQAREojYBew1QaN8UqgMAf//hH94tf/CI8nMR71njfW7kNLyvvkuN9kfy825133lnuUyg9ERABERABERCBMhOQB7TMQJVcEwFeMn3hhReGF8q3hvjkTDzBfu655waRm/WQUlOOtCUCIiACIiACItAeCMgD2h5qQXkQAREQAREQAREQgQ5EIP/jzR0IhooqAiIgAiIgAiIgAiLQ+gQkQFufsc4gAiIgAiIgAiIgAiIQEZAAjWBoUwREQAREQAREQAREoPUJSIC2PmOdQQREQAREQAREQAREICKgp+AjGNoUAREoDwHemTpv3rzMxDp16uT4AYLWMHv3bE1NjSvne23LmVd+FhZG/fv3L2eyyyStRYsWuUmTJrlevXqFv9bIBD8GQb3Ci18tS7MJEyY43vHbGkw5/3fffed69OgRfro37fzVum/y5MmhaPZjHNVaztYsV0duP7m4SoDmoqNjIiACJRH44IMPmv0KVjKRfv36uRNOOCG5u8XfZ82a5UaMGNGYzllnndW4vSw2eD/tp59+6jbbbLPG0yPMr7322vCLXIcddlh4TVnjwQrc4Gdtb7nlFrf55pu7HXbYoVVK8Mknn4Sf0D3kkEPcyiuvnHqOm2++2dXV1Tl+ua2chrC96667woCKn1488cQTy5l8u0/r4YcfDm21o5W7XBXT0dtPLo4SoLno6JgIiECrEGjJT6/myhBez/ZiiGGEC17YWIDyc678gAKmn3ZtL7WVnY+XX345iM/11lsvU/xmx9aRjk5A7Se7BUiAZrMJv0++eMGcEKK2czdXU9tpqdD1/rfEFy+c61+EXutqu3Rf6rh2iIAIODd8+PAwfWksmCrFmNY0McrU6qBBg8J+pnRtCp9pT34O1abW8Z4ypcXUINvLL7+8q63Nv5x94sSJburUqUH88etZK6ywQjgX/yEE8VRg5I2fqSX8lClTXJ8+fcK0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rANlSoZXMjE1JxOB9kKAtZOIJP60Trk8tcJT0qxz5Mnflkz1lyc3SkUERKCjEdAUfBE1vnjeDPfZ7/u6+vn8Nvyf/W/D/7SI2AoqAiIgAiIgAiIgAiIAAXlAi2gHU56/PIhPpuH7MR0vEwEREAEREAEREAERKJqAXsOUB9mCyV/5d3/e6GaPet7N+fyhELrvJqe4zv1XyhNTh0VABERABERABERABNIISICmUYn2LZjyrZv05K8a93RfeSe3wiF/bfyuDREQAREQAREQAREQgeIIaA1oHl4Lp45200fe42pqu7juK27sug3bzP/u+7J5R12erOqwCIiACIiACIiACFQEAQnQiqgmZVIEREAEREAEREAEqoeAHkKqnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3KpAiIgAiIgAiIgAhUDwEJ0OqpS5VEBERABERABERABCqCgARoRVSTMikCIiACIiACIiAC1UNAArR66lIlEQEREAEREAEREIGKICABWhHVpEyKgAiIgAiIgAiIQPUQkACtnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3KpAiIgAiIgAiIgAhUDwEJ0OqpS5VEBERABERABERABCqCgARoRVSTMikCIiACIiACIiAC1UNAArR66lIlEQEREAEREAEREIGKICABWhHVpEyKgAiIgAiIgAiIQPUQkACtnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3KpAiIgAiIgAiIgAhUDwEJ0OqpS5VEBERABERABERABCqCgARoRVSTMikCIiACIiACIiAC1UNAArR66lIlEQEREAEREAEREIGKICABWhHVpEyKgAiIgAiIgAiIQPUQkACtnrpUSURABERABERABESgIghIgFZENSmTIiACIiACIiACIlA9BCRAq6cuVRIREAEREAEREAERqAgCEqAVUU3tK5Pz5893v/nNb9xvf/vbnBl77bXX3K9//Wv30EMP5QyngyIgAiIgAiIgAh2LQOeOVdzylrZ+knOz/uRcfb1zfS7xaZeRJmkufMS5Be85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908G03cREAEREAERaFcE8BfJOigBnJSTN3FugfdYYjSGBf4vOByn+I1V/J+3uf/24U5r2GbE0tUL1UWv+bBTnZt2od/+xrm+/9twnP+7H+g9iV5MYvP9szDeOemI12Uj9jRYzRDbav65aHrz78V8m/U/Pq8vNcTAUcp5KeMC79lN2nS/NhUjm4SjzNgkn/ehk3z+i38GqCGBMvyPgOQBIR4mGjlypFuwYIG74oor3Lrrrut+/OMfNztD9+7dXZ8+fcK+CRMmuMmTJ5f0AFOzRPVFBERABERABFqZALpA1kEJBHHmxedALx5X9MpzsFdiK850rv+fvQBbrgFK/VjnpiwRnz0P9WG8MB34qHPL+88BlzeEmekF6sIlwo89vX385d5t+OtxVEOYXr9o2scx0ii3IT67beXckC+cW8GXZYj/G/yK37dP+pn6+Dwt75XnYP836K6mMPMeaNouZWudddZxvHLp2WefdYce6qEtsQsvvDDse/zxx21X6me9X0/w7rvvujfffNONGjXK7bfffiHc//5vpPKXxNx9993dRx99FP4uv3xJhaSm2rDzN7/5TcjDvffe2xhq8ODBYR/5Pe644xr3a0MEREAEREAEWouAPKCtRbZC0u33O++xPLUpszV+errnT5u+z76qyYPZ75rmayR7eGE64wcNM/Bz7/TCc7umeMtiiyWiAx9u7r3svLX37Pq/pDHy6v1rH3bJEKzrIV6oeg/tPO+xXfR1MnRx3zt16uR23HHHpSKtvPLKja87WupgtOOXv/ylY90nNnToUPfTn/7UPfjgg473fLbU1ltvvaWS6Nq1q9tpp52W2q8dIiACIiACItBaBCRAW4tshaTb85TcGeVhHgxv6bQT/X/eqxiMHd6WfLj5zzV8X5b/9/az04VOnXc7wIf1a11jC+8pRYB+F+9t++0ddtih2Unr6urCd94dykvu+/fv3+y4voiACIiACIhApRGQAK20GitzfrPWYtpp5t9nW00PFDXtadpavIxFGznp3PCDQ02ZyrHVeeWlD9b2WLLPRPbSQdpkj72Q3k7Gi+vNFi3y6wVkIiACIiACIlDhBCRAK7wCW5L9giofL6FfJ9rrSOf6+CfZs6w1X1/Ea5MKsdol61YLCVvfjlc/M4UvEwEREAEREIFqJlCQBqlmACpbbgJd9vJPkd/qZ979AsvaVXKHzXW0xubqMwLxHs5gs5cOsOirpfel7mERqEwEREAEREAERKDdE2jHfqB2z65DZLDrJg3FnONFKC+rL9Zq/bs1sXkvNnxm/V+7QsORBSObh6if5eM+1XyfvomACIiACIiACFQ2AQnQyq6/Vs89T8jjWGRZ5LT/8CJ0fPNT8vqlaSf5J+EzHkLqvFpD+Ln++IJnfTpLv0s9BOi8xLs6z79fdP7dfhfT7gv9y+LPb3ruqSEl/S8CIiACIiACIlDpBDQFX+k12Mr5rx3s3/f5f/5F9F5kzvHvx5zjPZXd1veitJ8Xil582sx6z6PTM9LtcC8gf9UgYifs0vDJbHuNF5zLj2qK0/Wgpu2J/tWZNiNf4PLPpsgdaGv06NHuhBNOaCzxuHHjwvaHH37oeD+o2V577eXOO+88+6pPERABERABEVjmBCRAl3kVLIMMLHmoOvkaoqycdP8P/7L2dfwL6XfzXkz/QNK8D5pC1vjNnv54J388zdi/gp9+51eKZt/W4M30jk3X6evmoXnx/SD/xP1E/0tEmAlP3lPKGlBedp83v0vKFRJowX95z9OCtAuJmushpPjYnDlz3JNPPrlUkjwpH++31zgtFVA7REAEREAERGAZEajxv7rC7KpMBAoisHiqF5Hf+D8vRHnnZu0w/1km4UcGWPO56Eufpm+VtV681nQtKFsKJAIiIAIiIAIiUEEEJEArqLKUVREQAREQAREQARGoBgJ6CKkaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UBAArQaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UBAArQaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UBAArQaalFlEAEREAEREAEREIEKIiABWkGVpayKgAiIgAiIgAiIQDUQkACthlpUGURABERABERABESggghIgFZQZSmrIiACIiACIiACIlANBCRAq6EWVQYREAEREAEREAERqCACEqAVVFnKqgiIgAiIgAiIgAhUAwEJ0GqoRZVBBERABERABERABCqIgARoBVWWsioCIiACIiACIiAC1UCgczUUQmUoncDMmTPdI4884r744gs3b968kNApp5zihg4dWnqiiikCIiACIiACIiACOQhIgOaAU+2HPv74Y7f77ru70aNHNyvqvvvuKwHajIi+iIAIiIAIiIAIlJOABGg5aVZYWueff34Qn6ussoo74YQT3LrrrhtKsN5661VYSZRdERABERABERCBSiJQU++tkjKsvJaPQF1dnRs1apS78sor3WmnnVa+hJWSCIiACIiACIiACOQgIA9oDjjJQwtnTnTzRr/jOvUZ7LoNWd/V1HZKBqmo72PHjg353XzzzSsq38ps+ycwf/78xjXFabnt1KmT69mzZ9qhFu+bMWNGSKOmpsb17t27xem1RgKzZ892MOrfv39rJN+maVIW1pIPGDDAdenSpVXOPWfOHEe9wqtr165LnQOWU6dOdf369XPdunVb6nhLd0yaNCmkv/zyy7u+ffu2NLmKib9o0SJH2Xv16hX+KibjBWSUsn333XduwYIFbtiwYWVtux21vRSAvVkQCdBmONK/1M+f48bceqqbOfLGxgC13Z1bbte/uQkP/ZdzXoeu9Zu5rrZz+W98jScsw8b48ePdOuus05iSPXQ0fPhw17lzU1N46qmn3KabbtoYThsiUCyBDz74wD333HOZ0RAKLPsot82aNcuNGDGiMdmzzjqrcXtZbCDMPv30U7fZZps1np7r7tprrw0d32GHHeZWWmmlxmOVuDFy5Ej3yiuvuKOPPtoNHjy4VYrwySefuGeffdYdcsghbuWVV17qHF9//bV76KGH3B577OHKvYTozTffdC+88EI4J4P1HXbYYanzV+uO6dOnu1tuucVVW7kXL17s7rrrriBAqbujjjrKrbDCCmWpxo7cXooF2KQ6io3ZgcJ/e93Rbvan94USd11ubVfbcwU3Z/RzDeKTvYv8XwtWMiD4vvrqK1LKaxtssIHbeuut84ZLC4DIXH311RsPvfXWWz7b9WH0F3ujWsOD0HhSbYiAJ9BaK3/werYXQwzTyeGFjQUoHpeFCxeGbLIta78E5s6d615++WXXvXt3t8kmm1T8YKH9km7bnDGgwfuJ6Fx77bXLNhOh9lJcPUqA5uE1+8uXGsXnwOEXuuX3uSjEmPXZs+7b/9ulQXzmSSPf4UsvvdQ98MAD+YKF4+ecc07JAnTgwIHujTfeaDwPQpOpq5tuukkez0Yq2mgNAnjZe/To0Zi0TdXSCZgYZWp10KBBIQxTWOahJx6DJ5tax3vKlOzkyZPDlCvTorW1+V9pPHHixDCNivhjujj2eCAEJ0yYEM5N3pZbbjlH+ClTprg+ffqEt0LE4hZxSXg6HMQJeWCa0oxpacQn08KkN2bMmHCIvLP8AC8a5+R7bOSNchEPHlyz8ZRvMfnEe8WsBw8Zpk1bx+fVdjoB6oGp2pYM/NNT7hh7uQ5eeuml8LaV9lRiu9a5Dss5A6H2UlwtS4Dm4TX9zYZp9059urtBe/6qMXSvNXd2fTb8DzfjnRGN+0rd2GuvvUKHV0j8rbbaqpBgCiMC7YrAGmuskbrmk+kq3kGLISKZCuPz5ptvdkyTYfvss094W8N7770XviMETbSyAxF36KGHBqEYAiT++/LLL8P0LYIsNoTdfvvtF8QjHdIdd9wRDiMYEcKIY7NVV13VHXjggQ7h+cQTTzimfGMjz9tvv33wdCKOEZ+IVyxOe6eddnLk//nnnw/HENq89gxjqp5pZjrt2Dj3rrvuGsoXp5UrnwjPW2+9NSTDO32POOKIOMlm2wxCKc+0adMa9/NGjFhQc4D6+Oabb0JYmCNs4zWs5JsBLp/kmeOxIehZd046CPy442c/r4Nj+txmY95///0g1u3tHHFabBOHmSMGATZYSYax79QF7YwZILa//fZbR5u0PFB+yoaRd9YEEu6dd94J+xj80I5WW2214L3+6KOPGtdGsqyJQQr22WefOdrZhhtu6FiaQL423njjwJLBRVY8lqzAhXb3+eefh0EL5Y4HH+SBNkI9wWjNNdds7DfYxzHaJ2kQl4FO0mg/lJVlDLZcwtjE7AlD2HiQ9uGHH4YBDXVH+rZsizJTFwzEyJO1CZsBgIE5PljaRb7S8st1wawc6SD4zWDDNcUsAtdZWl0R1sqRVceWHu3AXj3IQ7gMcBnoxZYvrbQ8VEt7YQBMndIeuYaHDBlS0AA/5lfotgRoHlLzJ38eQvRa6wRX06n5Avtea+1ZFgF69tln58mFDotAZRO45pprgvCyUtBpI6pYs8caMzokbnj8KAKdDNsYa8/WWmutxg6DfbH45DtxEXxZa0rpmBEFdHx0ntxgEQPse/HFF93BBx9MMo2GlzEWnxygo6LTIV98YnhREW90tOxHVNJxMmXLOdKMPFjZ4uOc7+GHH453NW5zbtY3JkVkrnwiCMzGjRsXzgnXpDEAwEMV54kOuc6/ISMpQBEH8DIjvTPPPNO+uvvvvz8IJ5i8/fbbQVgjSKivZ555xtkAwiIgghgA4J2FKetI2WcC9LXXXgsPFKUJUNK3NcbJAYmlH3/CgLwjMk1okh9+dINyvf76643BYbLLLruE8jNViyE+KS/C9Pbbbw/ecYtA+COPPDK0B0QaotiEOmEQcgwycsWjPAxGKAt/1AcC9phjjgk88KDfd999ob3ZeSnTQQcdFK4NjtEezHjHM4My0oqN9gcHysFxDM6Ex9PL8i7OzSAL4WhhKCPl549rBwG39957B260HzO2DzjggCDs77zzzuDJ55i1m/XXXz9cG1n5RRzSdhk0IQq5tskLQniLLbYIbTWtrhD5ueoYUWvG/YA6wRDGzF4kBWiutKq5vTB4ZPBPW8BoG/vvv3+zpXvhQJn+kwDNA3LhlIYbUKc+Q5YKWdu9+fTZUgG0QwREIBCg04oNkYKxDAQRgreOmx5eBDPEyHbbbWdfGz8RR4hXRAudE0ZHheiLOxqLQCfMzAF/dMDcVBGJWNIranFY74fwffTRRxvD4MGjo6LzRjjj9SK/119/vUULYckbnjXENBZ39nw3rxrbZnTwZpyD9PFiPv3002E3HSKdPvmPLSufePdIE+6scUM4JM3WqyHKyTMihLzx4xTsSxpeQwwhDFM68tgQ3wg3xDTiAy8KAhQhhdijo2dAgefs3XffDSKNh3s4dzGGJ5B4tJ3ddtsteCXxkhmrXGkh5BCDlB3BRoeLoKG8dLTY3XffHQTTSSed5Jidog0wVYtXE6FIO0Dw0DZpgwwOXn311SDI7NxwP/zww4M3E/6FxKOOyBvtG8EON1hSl08++WQQn4gwRBztwa4hvOaUBQ/9iiuuGLzoCGHEHHFjo23h1SLfCF7EvtUj59tyyy1DPB6eo4y2dIN4DNT4jkChbvfcc8/AD68m7ZD2wfWIBxdPMe3kxhtvDNckD9thDG5y5RcvJzxph7QL2gnGObi+s+oqfvAsWcfJewJtBpFNGRi0mvc6nCjxXzKtam8vtCnuw9Qn1yr3hFx8EriK/ioBmg9Z5yUjp0XNO1Ci1aTc1PMll3acGx4VXYjRiXIByUSgkghwQ4sfbosFDlOGdDaPP/54Y5EQWnhY0oQTU4c82ENHjBBBTGC23rExkSUbiCI6DkQnHi0611zGDXfnnXcOQRDBTAVjeITovBGXpEMnH3saCZP0zrKvEEMMmOEdxuPDH15Bph8xxC6szHLlk3Ann3xyEMQIvyyjs7FzUT46fjp6BETSEOQIl3vuuScsN9hxxx2bBUGAUl/wQWiwHg4zgcN9y6Z9EUpXX311EAHFClBEGQKC/CBwMc5XiCEiLQ7hEa4Y9RYPAhB0DE5MgPHJH4IEo83Zk/F8RxDGhjiljPxhNuDJFY8y2EOifCIIYUj9U/d43Fnmgdk0N4IBQcz1gpeWP2vfXA9JAUpcxBz1SF0zxQ9LhCiefEQr+zEEqBmi2F5pxhIFhCEDgW233TZw4foyQWzeM8pDe+DP6idffrfZZpsgeLi2EMPUD5546ozlC1haXVlb43iyjtkXG0tXbPkA4jTtHmPhk2lVe3uhzmFDG+B+wL3TrgFjUs5PCdA8NLsOWMctGP++WzD1q6VCLpg2eql9pez497//XdRDSBKgpVBWnGVJgM7EplbT8mEi0o7RiSHyEK5Zhkjgzyw53Wj7mQ7FG0madDh4pGxq1cLEn7GXkc4qNlvfaR0enhfSsk43DmvbuY5ZGPKFFxfjxo8hDOK4yY4gVz6Jj5BEGNH5m3hgvxnnxDuLwEbEEJ7OGIGRZgh+PHtMp+KhwyPL+tw0g5vlHWFDuvGgg3OzjpRzxnVImfOZhY/TyxfHjrOeLTZLi/zYAAlhiyV5s8/Cw9REDF7JZDthCjm2QuNZHBNsMLQBiIlOC8Onpcv5Lf+IfP4YWKQZgyjELIKOMlBOptpvuOGG4J2kvmgDhIlnJCwtKyt545pjKQSCxcR2rkFYvvzSTrjmWc7CshoEK5449lvcfHWVrGPLdymfybQKzYOdy8JXSntB7OOtxhlA+2CATdtIu39YGVvyKQGah163weu5Wd45OfOjG92iOf9ynXo0TbvPGNnw0EKeJPIepsLjKYRcEZgSkolApRFgCtY6LvJOh4InBmPqLvYmhZ3+PzohOtFkJ0B4vGzcIE3kECfL08c6LwuHt40O1wQoHYQJPjtvrk/imfhEqDBdjdfJ0kdIsx3fsBGBTNHSmSPC4wdL7Fx03uZFw8tCOESheZUIRxjzblm8rE9ENzMrGOyPP/741KB4sFibiAcW0cQUaOxljSMhkPGQ4B3lrR1MYeKNzGcIRZjBzu5zrMFDfMKCdmGDExhR3zBE7Jqois+BMMJYGxt76eIwWdvJQYqJNNojXks7Tt7ojPmMjbxRZvKw0UYbhUMIrtiDzU5Lx+IWGs/Cx58IddKjvHgajRVhyCNtjf2wsHZHm0ZIphlpIfKe9ss74Mw2U+zUK20Zs2szLX68D08oywsYiOCl/Oc//xkfDtd53IYLyS+edDz/tDcGWXghsXx1ZSdOsrf9pXwm08qXh0pvL3j9uV5Ze8w9mYEFdWye91IY5oojAZqLjj/Wb9uT3eTnf++cn4Efc/NJbsWj/tfVdu/rpjz//9yczx/OE7uww0yVyUSgmgkgwJJGJ4eg4uEb85ogELnpcSPHG8Z6sGOPPbZZVKZB8Y7ERudJJ0pHnDSEjBlToXEYOmmmgpMPIln45GecFtOYeI1i7y2ij7V4eJDobEmfctChYnhf0wQo4oG1c3QApGdPydv5OU68QgVoLAxJE6ERe0wtXVhjw4cPD9O18SDBwtjngw8+GMQ7HjTjkJamhbdPPIRM7eJVYWqVAQBiCuMYZqLSnqLnOJ4/GCYNoYyg42EfHnwygZsMV8h3Bi38MajhQbk6P9UML86fJtpZHkGHjHhDUHNu2iNCJdlO4/OXGo80YIwoY0qePNLWaVPwYZ2pCbbrrrsuTOEjphGSDCa4JtKMB7t4YAihakIaIUo86oKlJ4WYeUjJiz3pjnC09b+IZbxovOsariwJyJdf2gdhELZwM29wsXVVSP6LDVNsHkqt91LjUZ6WtBfaMQNW2ocNYKiP1rKlV6a31pkqNN2uy63uBuz065D72R/f5T67eJD7+IKu/iX0Z7t60avQWlW2W5tA0nOQPJ8dR3zaFCMdK94OHm6w4wguHsCIzTok9iGY8KqxXhSzePE2ni27ieKJQ7zEwgZBkxaPNOjMzQhD/uiEMDpvhACCzAyRSNqEZf1UPBVLvjl3bJY+8RATdNCWN9LgXHgfSAsrNJ90IKRJeIRFmlDE+2veqccee8xdeeWV4VVUiLE0q/PijHWFiHhEMuvR8QhZnqwsybiEQeAjhpi2R+QgTPAem3cLjzb5RLwwxc/UcCyG43Owjcin3vEa82AKggezcMk82PdkHuHCk+SUjTLR+ZJHlhvEnkaLR33w0BxT3Ih8wscizsLZ+ewzX7xkvi0d+2S9LXww1tTC0No0T64j5JmaRhTzPAHCOGspBWnAFpGH0DTxb9ucx/KT/CRuvA/xiteVaXjaBl56Pm0AxJpOPOqIZzz65LGQ/FoerMyct9i6Ik6WGdes47Y/Ga7YPOSr92T6dt588awOLLylY5+lthfaNWlwTTFo5LoodpbB8lTIZ433PNQXErCjh5nywhVuyiv/cAumvO9q/YOoPdf8nuu9wSFu7C1H+SvSezZ+v7Difhue6S06IG6i1hF09HpW+dsnATxOtFOMDgzvKR0/D+Ikb8ZpJeA2x0MTiDs6ETx4Np1pa/nS4mXtQzRzXjpUjLS4cdv3OF6uY3G4eBvvA9dnKXmzdCgzoioW7HaMT55YZrofsYpIQJyzHpQy8AQ4nJKG4KY8JrKTx/N9535DGmmciEu9cNzEVb70ynmc89Kmsnglz2Xivdi8lhqP81On8CePJjbifNEuaTdpx+JwbMMaz3i8zIH4lCet7pPx7Tt5YjBDvKw2R7ppXHPll2vABmN2Lvsstq4sXjk/i81DqfVeajzKWmp74b5BGyq2bRfLV1PwBRIbsMPpjr/FC+d7odk5PAE/7bXrQuwuA+oqTnyScW62MhGoRAJ0mnHHma8MiEU8gmYIu/i77S/0M9mZxt6yZBq5jiXD2vesjteOF/JJmZP5jOPZWlZeMWR5ZC0j3is8kWnTt3RKts4wTqvQ7XwdWksEd6F5yApH2XLxSsbLV5ZkePteajziU6e52kYx+Yd1kncx8a085MnKlNXmstLN2k/aucpZbF1ZXsv5WWwejFGxeSg1Hucptb1kDRCLzXu+8BKg+Qj544tmT3E1XXu62s5+ZNm5YT1EvR8tT3v9mhC725BtC0hFQURABESg/RBgCpv1iyNGjAjTsHic8EjZU9LtJ6fKiQiIQDUSkAAtoFYnPvZ7N/3tS13fTc913Ydu7N3ai92Mt29yc0Y1vAR7ud1+VkAqCiICIlAqAdZO2oMvrI+StZwA6xxZo8qaTx4UWc2vweW1TMk1sS0/k1IQAREQgaUJaA3o0kyW2jPu7nPd1Jf/utR+518RuML+V7v+25609DHtEQEREAEREAEREAERSCUgAZqKpfnOxfNmuDlfvermffeeWzhzvKvxU/Hdll/H9VxjJ9e5/0rNA+ubCIiACIiACIiACIhATgISoDnx6KAIiIAIiIAIiIAIiEC5CTS95K7cKSs9ERABERABERABERABEUghIAGaAkW7REAEREAEREAEREAEWo+ABGjrsVXKIiACIiACIiACIiACKQQkQFOgaJcIiIAIiIAIiIAIiEDrEZAAbT22SlkEREAEREAEREAERCCFgARoChTtEgEREAEREAEREAERaD0CEqCtx1Ypi4AIiIAIiIAIiIAIpBCQAE2Bol0iIAIiIAIiIAIiIAKtR0ACtPXYKmUREAEREAEREAEREIEUAhKgKVC0SwREQAREQAREQAREoPUISIC2HlulLAIiIAIiIAIiIAIikEJAAjQFinaJgAiIgAiIgAiIgAi0HgEJ0NZjq5RFQAREQAREQAREQARSCEiApkDRLhEQAREQAREQAREQgdYjIAHaemyVsgiIgAiIgAiIgAiIQAoBCdAUKNolAiIgAiIgAiIgAiLQegQkQFuPrVIWAREQAREQAREQARFIISABmgJFu0RABERABERABERABFqPgARo67FVyiIgAiIgAiIgAiIgAikEJEBToGiXCIiACIiACIiACIhA6xGQAG09tkpZBERABERABERABEQghYAEaAoU7RIBERABERABERABEWg9AhKgrcdWKYvA/8/edYBJUTTROkFAkajkjBIkJ0lKEBEERAUBJUgQRNQfzKKCiiJJUVSCAqKACkgSRAFJAioCIklyzjknQZT563Vf783Nze7t7u3d7d5Vfd/szPR091S/mdl5U1XdLQgIAoKAICAICAKCgAsCQkBdQJEkQUAQEAQEAUFAEBAEBIHEQ0AIaOJhKzULAoKAICAICAKCgCAgCLggIATUBRRJEgQEAUFAEBAEBAFBQBBIPATCh4BuWp94rZSaBQFBQBAQBAQBQUAQEATC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RQJ5EKAAzQMOL5EACZBAQQlgyaXu3bubmdnwUPXs2VN69eolpUqVMovSP/XUUwUtms+RAAmQgOcJcAje813IBpAACcQjASy7tH79elO1p59+WqzgvO++++TDDz8060pigpBXZlvHI2PWScyKBvGwHBT7ggQiJUABGikx3k8CJEACYRDo3LmzVK9e3awxOWHCBHnzzTfN8kLYOQeGXXEoPsMAyVvyJJCSkpLndV4kgXglQAEarz3DepEACXiaQL169YwHdN68ebJx40YjRDETfciQIdKtWzcZPHiwp9vHypMACZBANAQoQKOhx2dJgARIIA8C2J5x4sSJedwR+lJ6erq89NJLoS9GcRZbS9ISiwBii7ET0muvvZZYDWNrEp4ABWjCdzEbSAIk4CUCdneev/3tb65XGzv9YKF2WuIQsLtJJU6L2JJkIcCdkJKlp9lOEiABEiCBhCMwadIks7lAampqwrWNDUpsAhSgid2/bB0JkAAJkAAJkAAJxB0BDsHHXZewQiRAAslMAMs3bdq0KWYIEDPIXXNihpcFkwAJhEmAAjRMULyNBEiABAqDwAcffCCzZs0SzKJ32w4dOmQmq1CAuk226MqbOnWqYLLbiBEjiq4SfDMJFIAABWgBoPEREiABEoglgTvuuEOwx7fbduONN7pdJMsrYgKffvqpmQVPAVrEHcHXR0yAW3FGjIwPkAAJkAAJkAAJkAAJREOAAjQaenyWBEiABEiABIqQAGKGY7FkVxE2qdBf/fLLL8v9998ve/fuNUe7Bi/WzQ137dyMjAzz7LJly2Ty5MkybNgw+fnnnwu9LV56IQWol3qLdSUBEiABEiABB4GSJUtKiRIlHGeYjZQANn6YP3++nDx50hxXrVplihg4cKD07t071+I2b94seBYG8Yoydu7cKfhS8P7771OA5krOd4ExoPkA4mUSIAESIAESiFcCX3zxhVSsWNHEgcZrHeO9XmXLljVVrFKlijmWKVMmrCo//PDDsnXrVjl9+rTYZ3BE4heD/BFSgObPiHeQAAmQAAmQQFwSmDBhghGfM2fOjMv6eaFSrVu3lho1ashNN90kmKjXqlWrsKqN7U+PHz8uxYoVE5QBa9GihckfPHiQnul8KFKA5gOIl0mABEiABEiABBKXQN++faV06dKmgePGjZNu3bpla+yuXbvko48+MtvYDho0SGrW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BEiABEiABEiABEigUAn4NjYt1FfyZSRAAiRAAiRAAiRAAslMgAI0mXufbScBEiABEvA0gQEDBsj48eM93QZWPjkJUIAmZ7+z1SRAAiRAAglAwC62nwBNYROSjABnwSdZh7O5JEACJEACiUOgQ4cOYW19mjgtZksShQAnISVKT7IdJEACJEACJEACJOARAhyC90hHsZokQAIkQAIkQAIkkCgEKEATpSfZDhIgARIggaQj8Morr8j8+fOTrt1ssPcJUIB6vw/ZAhIgARIggSQlsHjxYlm1alWStp7N9jIBClAv9x7rTgIkQAIkQAIkQAIeJMBJSB7sNFaZBEiABEiABEDg1KlTUrJkSalQoQKBkICnCFCAeqq7WFkSIAESIAESIAES8D4BDsF7vw/ZAhIgARIgARIgARLwFAEKUE91FytLAiRAAiRAAiRAAt4nQAHq/T5kC0iABEiABEiABEjAUwQoQD3VXawsCZAACZAACZAACXifAAWo9/uQLSABEiABEiABEiABTxGgAPVUd7GyJEACJEACJEACJOB9AhSg3u9DtoAESIAESIAESIAEPEWAAtRT3cXKkgAJkAAJkAAJkID3CVCAer8P2QISIAESIAESIAES8BQBClBPdRcrSwIkQAIkQAIkQALeJ/D/YGTIrvnogowAAAAASUVORK5CYII=" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Function references can be passed as arguments!\n", + "\n", + "[PythonTutor Link](https://pythontutor.com/visualize.html#code=def%20hammer%28%29%3A%0A%20%20%20%20print%28%22tap%20tap%20tap%22%29%0A%20%20%20%20%0Adef%20call_n_times%28f,%20n%29%3A%0A%20%20%20%20for%20i%20in%20range%28n%29%3A%0A%20%20%20%20%20%20%20%20f%28%29%0A%0Acall_n_times%28hammer,%203%29&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def hammer():\n", + " print(\"tap tap tap\")\n", + "\n", + "# TODO: define a function called screwdriver that prints \"churn churn churn\"\n", + "\n", + "def call_n_times(f, n):\n", + " for i in range(n):\n", + " f()\n", + "\n", + "call_n_times(hammer, 3)\n", + "\n", + "# TODO: invoke `call_n_times` with `screwdriver` and `5` as arguments" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Your turn!\n", + "Calculate the distance between two points using either the manhattan or euclidean distance." + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "Source: https://www.researchgate.net/figure/Example-of-Euclidean-and-Manhattan-distances-between-two-points-A-and-B-The-Euclidean_fig8_333430988" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Review: NamedTuples\n", + "\n", + "We create a namedtuple `Point` with named attributes `x` and `y`. We then create lists of points we want to calculate distances between" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import namedtuple\n", + "\n", + "Point = namedtuple(\"Point\", [\"x\", \"y\"])\n", + "\n", + "left_points = [\n", + " Point(0, 0),\n", + " Point(3, 3),\n", + " Point(2, 2)\n", + "]\n", + "\n", + "right_points = [\n", + " Point(5, 5),\n", + " Point(0, 3),\n", + " Point(2, 2)\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Complete the function `calculate_distances`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We already did the math behind `manhattan_distance` and `euclidean_distance` for you!\n", + "\n", + "**Hint:** `distance_algo` should be a reference to a function that calculates distance between two points.\n", + "\n", + "Then, call calculate_distances measuring first in manhattan_distance, then euclidean_distance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "def manhattan_distance(point1, point2):\n", + " dist_x = abs(point1.x - point2.x)\n", + " dist_y = abs(point1.y - point2.y)\n", + " return dist_x + dist_y\n", + " \n", + "def euclidean_distance(point1, point2):\n", + " dist_x = (point1.x - point2.x) ** 2\n", + " dist_y = (point1.y - point2.y) ** 2\n", + " return math.sqrt(dist_x + dist_y)\n", + "\n", + "def calculate_distances(distance_algo):\n", + " # TODO: use the `distance_algo` to find the distance between\n", + " # corresponding points in `left_points` and `right_points`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calculate_distances(manhattan_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calculate_distances(euclidean_distance)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exploring the default use of `sorted()` on lists of tuples, and on dictionaries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `sort`/`sorted` takes in a second argument called `reverse`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "populations = [55, 77, 33, 99, 22]\n", + "\n", + "# TODO: sort populations in reverse" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 1: sorting lists of tuples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "quidditch_players = [(\"Oliver\", \"Wood\", 14),\n", + " (\"Angelina\", \"Johnson\", 13),\n", + " (\"Katie\", \"Bell\", 12),\n", + " (\"Alicia\", \"Spinnet\", 13),\n", + " (\"Fred\", \"Weasley\", 13),\n", + " (\"George\", \"Weasley\", 13),\n", + " (\"Harry\", \"Potter\", 11)\n", + " ]\n", + "\n", + "sorted(quidditch_players)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 2: define a function that returns a value from a tuple" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def select0(some_tuple): # function must have exactly one parameter\n", + " return some_tuple[0]\n", + "\n", + "def select1(some_tuple):\n", + " return some_tuple[1]\n", + "\n", + "def select2(some_tuple):\n", + " return some_tuple[2]\n", + "\n", + "# Test these functions on the tuple (\"Draco\", \"Malfoy\", 11)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 3: call `sorted` using the `key` argument" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: sort the list of tuples based on the last name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: sort the list of tuples based on the age" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using `lambda`\n", + "- `lambda` functions are a way to abstract a function reference\n", + "- lambdas are simple functions with:\n", + " - multiple possible parameters\n", + " - single expression line as the function body\n", + "- lambdas are useful abstractions for:\n", + " - mathematical functions\n", + " - lookup operations\n", + "- lambdas are often associated with a collection of values within a list\n", + "- Syntax: \n", + "```python \n", + "lambda parameters: expression\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sorting part 4: using `lambdas`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sorted(quidditch_players, key=lambda each_tuple: each_tuple[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### The `lambda` function above is equialent to the following function:\n", + "\n", + "```python\n", + "def no_name(each_tuple):\n", + " return each_tuple[-1]\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 1: Sort the list by the length of the first name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2: Sort the list by the length of their full name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### OK, I can sort a list of tuples....what about a list of dictionaries?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hurricanes = [\n", + " {\"name\": \"Calvin\", \"year\": 2000},\n", + " {\"name\": \"Alexandria\", \"year\": 1980, \"speed\": 100},\n", + " {\"name\": \"Blanc\", \"year\": 1990, \"speed\": 250},\n", + "]\n", + "\n", + "# call sorted on hurricanes and use a lambda expression to grab the year\n", + "sorted(hurricanes, key=lambda d: d[\"year\"], reverse=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3: Sort hurricanes alphabetically by name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 4: Sort hurricanes alphabetically by speed" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### This is all great, but what I'd really like to do is to sort dictionaries!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `sorted(dict)` returns a list of the keys sorted" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "menu = { 'pie': 3.95, \n", + " 'ala mode':1.50, \n", + " 'donut': 1.25, \n", + " 'cookie': 0.79, \n", + " 'milk':1.65,\n", + " 'loaf': 5.99,\n", + " 'hot dog': 4.99}\n", + "\n", + "sorted(menu)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### But we can make progress on this by using the `.items()` method " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "menu.items()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### We can sort `menu.items()` the same way we sorted list of tuples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sorted(menu.items(), key=lambda t: t[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### And we can turn this list of tuples into a dict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dict(sorted(menu.items(), key=lambda thing: thing[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 5: Can you change the previous code to sort by price?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 6: Can you change the previous code to sort by the length of the name?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/s24/AmFam_Ashwin/24_Comprehensions/Lec24_Comprehensions_Worksheet_Solution.ipynb b/s24/AmFam_Ashwin/24_Comprehensions/Lec24_Comprehensions_Worksheet_Solution.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..09b1a60fdb137f53fae8ba06f8a6a958e647abbb --- /dev/null +++ b/s24/AmFam_Ashwin/24_Comprehensions/Lec24_Comprehensions_Worksheet_Solution.ipynb @@ -0,0 +1,346 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2e3d10aa-07d4-47ff-a27d-b6170b3890de", + "metadata": {}, + "source": [ + "# Problem A" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7c56f9e4", + "metadata": {}, + "outputs": [], + "source": [ + "words = [\"pineapple\", \"mango\", \"quince\", \"blueberry\", \"orange\"]" + ] + }, + { + "cell_type": "markdown", + "id": "811de0bb-38ae-4b8b-b5f4-a870290ba1e0", + "metadata": {}, + "source": [ + "#### 1. Use comprehension to create a list of the words that contain \"o\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "817f579f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['mango', 'orange']" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[w for w in words if \"o\" in w]" + ] + }, + { + "cell_type": "markdown", + "id": "6f25ea46-e7d7-4951-a52d-434cfc5c4640", + "metadata": {}, + "source": [ + "#### 2. Use comprehension to create a list of words that have a length > 7" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4dd182dd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['pineapple', 'blueberry']" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[x for x in words if len(x) > 7]" + ] + }, + { + "cell_type": "markdown", + "id": "1ca08482-6770-4967-9bc2-4133660fc8d9", + "metadata": {}, + "source": [ + "#### 3. Use comprehension to create a list of integers that represent the length of each word" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d3712c7a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[9, 5, 6, 9, 6]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[len(word) for word in words]" + ] + }, + { + "cell_type": "markdown", + "id": "d39da88d-addb-4925-bdec-faeefe35ae4d", + "metadata": {}, + "source": [ + "#### 4. Use comprehension to create a list of words that end with \"e\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6126ab6e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['pineapple', 'quince', 'orange']" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[w for w in words if w.endswith(\"e\")]" + ] + }, + { + "cell_type": "markdown", + "id": "0e58c9c2-7022-4e1f-9f04-dfddc4f2a2ec", + "metadata": {}, + "source": [ + "# Problem B" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bcbab6a8", + "metadata": {}, + "outputs": [], + "source": [ + "heart_rates = {\"Micah\": [67, 59, 84, 88],\n", + " \"Briana\": [59, 73, 67, 80, 79],\n", + " \"Jaren\": [67, 84, 71, 68 , 70]}" + ] + }, + { + "cell_type": "markdown", + "id": "ad83760f-67f6-4ec5-92cf-489bdab95d0d", + "metadata": {}, + "source": [ + "#### 1. Use comprehension to create a list of the names" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "14983b5f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Micah', 'Briana', 'Jaren']" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[p for p in heart_rates]" + ] + }, + { + "cell_type": "markdown", + "id": "9de2905b-d411-4923-9383-b6f983d1e4ab", + "metadata": {}, + "source": [ + "#### 2. Use comprehension to create a dictionary where the key is the same key, but the value is the min of each list" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f080b33a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Micah': 59, 'Briana': 59, 'Jaren': 67}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{p: min(heart_rates[p]) for p in heart_rates}" + ] + }, + { + "cell_type": "markdown", + "id": "3edb9d88-544c-4913-9966-a01285483c8e", + "metadata": {}, + "source": [ + "#### 3. Use comprehension to create a dictionary where the key is the same key, but the value is the average of each list" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "52198994", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Micah': 74.5, 'Briana': 71.6, 'Jaren': 72.0}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{p: sum(heart_rates[p]) / len(heart_rates[p]) for p in heart_rates}" + ] + }, + { + "cell_type": "markdown", + "id": "26f48b37-27dc-4fa6-86f6-21ac3d29c902", + "metadata": {}, + "source": [ + "# Problem C" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b4c58448", + "metadata": {}, + "outputs": [], + "source": [ + "player_stats = [\n", + " {\"name\": \"Rina\", \"goals\": 17, \"position\": \"Midfield\"},\n", + " {\"name\": \"Charlie\", \"goals\": 6, \"position\": \"Defender\"},\n", + " {\"name\": \"Heather\", \"goals\": 20, \"position\": \"Midfield\"}\n", + "]" + ] + }, + { + "cell_type": "markdown", + "id": "54425847-6823-496d-b8aa-ebc31528f87a", + "metadata": {}, + "source": [ + "#### 1. Use comprehension to create a list of names of people who scored >10 goals" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "cc6b8524", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Rina', 'Heather']" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[person['name'] for person in player_stats if person['goals'] > 10]" + ] + }, + { + "cell_type": "markdown", + "id": "be5fb26a-a6ba-4754-9ca9-0d650ef228ee", + "metadata": {}, + "source": [ + "#### 2. Use comprehension to create a list of all unique positions" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "58abdf9e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Midfield', 'Defender']" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list({person['position'] for person in player_stats})" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/s24/AmFam_Ashwin/24_Comprehensions/Lecture Code/Lec24_Comprehensions_Solution.ipynb b/s24/AmFam_Ashwin/24_Comprehensions/Lecture Code/Lec24_Comprehensions_Solution.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..7102e2f8e0bf0871293ffbce1cd5f8238aaf9fda --- /dev/null +++ b/s24/AmFam_Ashwin/24_Comprehensions/Lecture Code/Lec24_Comprehensions_Solution.ipynb @@ -0,0 +1,949 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1a: Sort this list by the length of each word using a normal function" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['fig', 'apple', 'banana', 'blueberry', 'blackberry', 'strawberry']" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "# write your code here\n", + "def get_fruit_len(f):\n", + " return len(f)\n", + "\n", + "sorted(fruits, key=get_fruit_len)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1b: Sort this list by the length of each word using a lambda" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['fig', 'apple', 'banana', 'blueberry', 'blackberry', 'strawberry']" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "# write your code here\n", + "sorted(fruits, key=lambda f:len(f))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 2: Sort this dictionary by their total enrollment" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Northwestern': 22316,\n", + " 'Iowa': 30448,\n", + " 'Wisconsin': 45540,\n", + " 'Michigan': 47907,\n", + " 'Minnesota': 52017,\n", + " 'Illinois': 52331,\n", + " 'Ohio State': 61369}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "enrollments = { \"Wisconsin\": 45540,\n", + " \"Michigan\": 47907,\n", + " \"Illinois\": 52331,\n", + " \"Iowa\": 30448,\n", + " \"Minnesota\": 52017,\n", + " \"Ohio State\": 61369,\n", + " \"Northwestern\": 22316}\n", + "\n", + "# write your code here\n", + "enrollment_tuples = enrollments.items()\n", + "sorted_enrollment_tuples = sorted(enrollment_tuples, key=lambda t: t[1])\n", + "dict(sorted_enrollment_tuples)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 3: Sort this list of dictionaries by `\"name\"`" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Gabriella', 'hours': 45},\n", + " {'name': 'Jade', 'hours': 62},\n", + " {'name': 'Patrice', 'hours': 72},\n", + " {'name': 'Sky', 'hours': 53}]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "volunteers = [ {\"name\": \"Sky\", \"hours\": 53}, \n", + " {\"name\":\"Patrice\", \"hours\": 72},\n", + " {\"name\":\"Gabriella\", \"hours\": 45},\n", + " {\"name\": \"Jade\", \"hours\": 62} ]\n", + "\n", + "# write your code here\n", + "sorted(volunteers, key=lambda d: d['name'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 4: Sort this dictionary of lists by the number of elements in the list" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Waukesha': ['Brookfield'],\n", + " 'Rock': ['Janesville', 'Beloit'],\n", + " 'Milwaukee': ['Milwaukee', 'West Allis', 'Wauwatosa'],\n", + " 'Dane': ['Madison', 'Sun Prairie', 'Middleton', 'Waunakee']}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cities_by_county = {\"Dane\": [\"Madison\", \"Sun Prairie\", \"Middleton\", \"Waunakee\"],\n", + " \"Milwaukee\": [\"Milwaukee\", \"West Allis\", \"Wauwatosa\"],\n", + " \"Rock\": [\"Janesville\", \"Beloit\"],\n", + " \"Waukesha\": [\"Brookfield\"]}\n", + "\n", + "# write your code here\n", + "cities_by_county_tuples = cities_by_county.items()\n", + "sorted_cities_by_county_tuples = sorted(cities_by_county_tuples, key = lambda t: len(t[1]))\n", + "dict(sorted_cities_by_county_tuples)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 5: Create a list of all fruits that contain `'berry'`" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['blackberry', 'blueberry', 'strawberry']" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "# write your code here\n", + "berry_good_fruits = []\n", + "for fruit in fruits:\n", + " if 'berry' in fruit:\n", + " berry_good_fruits.append(fruit)\n", + "berry_good_fruits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lecture 24: Iterators and Comprehensions\n", + "\n", + "Learning Objectives:\n", + "\n", + " - Create list and dictionary comprehensions\n", + "\n", + " - Use the correct vocabulary to describe iteration\n", + " - iterable, sequence, iterator\n", + "\n", + " - Determine if an object is an iterable, or if it is an iterator\n", + " - try to use iter() to determine if an object is an iterable\n", + " - try to use next() to determine if an object is an iterator\n", + "\n", + " - Use iterator/iterable language to open and process files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## List Comprehensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Do we have a shorter way to complete Warmup 6?\n", + "\n", + "Yes! Using List Comprehensions" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['blackberry', 'blueberry', 'strawberry']" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "[f for f in fruits if 'berry' in f]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What other ways could we filter our fruits list?" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1: Make a list of all fruits that start with the letter `\"b\"`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['blackberry', 'banana', 'blueberry']" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[f for f in fruits if f.startswith('b')]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2: Make a list of all fruits with less than 6 characters in their name" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['apple', 'fig']" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[f for f in fruits if len(f) < 6]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3: Make a list of the length of all the fruit names" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 5, 6, 3, 9, 10]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[len(f) for f in fruits]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### More List Comprehensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 1: Convert these Fahrenheit temps to an int in Celsius using `C = 5/9 * (F-32)`" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "temps = [32, 45, 90, 212]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Here is the traditional way to do it with a loop" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.0, 7.222222222222222, 32.22222222222222, 100.0]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cel_temps = []\n", + "for f in temps:\n", + " temp_cel = (5/9) * (f-32)\n", + " cel_temps.append(temp_cel)\n", + "cel_temps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Now, try writing it as a list comprehension!" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.0, 7.222222222222222, 32.22222222222222, 100.0]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "[5/9 * (f-32) for f in temps]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What if temps were strings?" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "temps = [\"32\", \"\", \"45\", \"90\", \"212\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.0, 7.222222222222222, 32.22222222222222, 100.0]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "[5/9 * (int(f)-32) for f in temps if f != \"\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Even More List Comprehensions\n", + "\n", + "What ways could we filter this list of volunteers?" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "volunteers = [ {\"name\": \"Sky\", \"hours\": 53}, \n", + " {\"name\": \"Patrice\", \"hours\": 72},\n", + " {\"name\": \"Gabriella\", \"hours\": 45},\n", + " {\"name\": \"Jade\", \"hours\": 62}\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Those that have volunteered atleast 60 hours" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Patrice', 'Jade']" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[d['name'] for d in volunteers if d['hours'] > 60]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Those with short names" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Sky', 'Jade']" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[d['name'] for d in volunteers if len(d['name']) < 5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What if we wanted to keep the name and hours?" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Sky', 'hours': 53}, {'name': 'Jade', 'hours': 62}]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[d for d in volunteers if len(d['name']) < 5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dictionary Comprehensions\n", + "Same thing as a list comprehension, but with a key *and* value!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4: Generate a dictionary of numbers and their squares!\n", + "\n", + "e.g.: \n", + "```python\n", + "{1: 1, 2: 4, 3: 9, 4: 16, ...}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nums = list(range(1, 8))\n", + "square_mapping_dict = {num: num**2 for num in nums}\n", + "square_mapping_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What ways could we filter this dictionary of people's scores?" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "scores_dict = {\"Bob\": [18, 72, 83], \n", + " \"Cindy\" : [27, 11, 55, 73, 87], \n", + " \"Alice\": [16, 33, 42, 89, 90], \n", + " \"Meena\": [39, 93, 9, 3, 55, 72, 19]}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Here is an old fashioned for loop" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Bob': 3, 'Cindy': 5, 'Alice': 5, 'Meena': 7}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_scores_dict = {}\n", + "for player in scores_dict:\n", + " scores = scores_dict[player]\n", + " new_scores_dict[player] = len(scores)\n", + "new_scores_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Now to do the same with dictionary comprehension" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Bob': 3, 'Cindy': 5, 'Alice': 5, 'Meena': 7}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{player : len(scores_dict[player]) for player in scores_dict}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### A dictionary of everyone's highest score" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Bob': 83, 'Cindy': 87, 'Alice': 90, 'Meena': 93}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{player : max(scores_dict[player]) for player in scores_dict}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### A dictionary of everyone's average score" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Bob': 57.666666666666664,\n", + " 'Cindy': 50.6,\n", + " 'Alice': 54.0,\n", + " 'Meena': 41.42857142857143}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{player : sum(scores_dict[player])/len(scores_dict[player]) for player in scores_dict}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2: Reorder the dictionary above so that the names appear in the order of decreasing average scores" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Bob': 57.666666666666664,\n", + " 'Alice': 54.0,\n", + " 'Cindy': 50.6,\n", + " 'Meena': 41.42857142857143}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# wrtie your code here\n", + "avg_scores_dict = {player : sum(scores_dict[player])/len(scores_dict[player]) for player in scores_dict}\n", + "dict(sorted(avg_scores_dict.items(), key=lambda item: item[1], reverse=True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Syntax of Comprehensions" + ] + }, + { + "attachments": { + "comprehensions.png": { + "image/png": "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xcPEkQAJkAAJkAAJkAAJkAAJkAAJUHBlHSABEiABEiABEiABEiABEiABEmg0AQqujS4eJo4ESIAESIAESIAESIAESIAESICCK+sACZAACZAACZAACZAACZAACZBAowlQcG108TBxJEACJEACJEACJEACJEACJEACFFxZB0iABEiABEiABEiABEiABEiABBpNgIJro4uHiSMBEiABEiABEiABEiABEiABEqDgyjpAAiRAAiRAAiRAAiRAAiRAAiTQaAIUXBtdPEwcCZAACZAACZAACZAACZAACZAABVfWARIgARIgARIgARIgARIgARIggUYToODa6OJh4kiABEiABEiABEiABEiABEiABCi4sg6QAAmQAAmQAAmQAAmQAAmQAAk0mgAF10YXDxNHAiRAAiRAAiRAAiRAAiRAAiRAwZV1gARIgARIgARIgARIgARIgARIoNEEKLg2uniYOBIgARIgARIgARIgARIgARIggeF7CcELL7yg3nzzzViSZ599djXTTDPF7HhDAiDwwAMPqE8++cTCGHXUUdVqq61m77t10dR0dYsH4yWBugl8/vnn6t57741Fs8ACC6ipppoqZscbEiCB8gTef/999eijj8YCWmKJJdREE00Us+MNCZAACeQlMEwkJq+nbrnv16+fuvrqq2PR9+/fX51++ukxO96QAAjMMMMM6q233orBaEJ1b2q6YqB4QwJ9iMAVV1yhNtxww1iOjjjiCHXAAQfE7HhDAiRQnsBJJ52kdt9991hA5513ntpqq61idrwhARIggbwEqCrsEPvyyy/VBx984NjwkgS6T4D1svtlwBSQAAlkJ8A2KzsruuybBPgO9M1yZa66T4CC6//KYK+99lKTTz65mmyyydSss86aUHPpflExBUMjAdbLobHUmWcS6F0CbLN6t+yY8moI8B2ohiNDIYEQAQquQuXZZ59VJ5xwgvrhhx80o1dffVUdfPDBIV60I4GOEWC97BhqRkQCJFABAbZZFUBkED1NgO9ATxcfE98DBCi4SiHdcMMNiaK677771HfffZewpwUJdIoA62WnSDMeEiCBKgiwzaqCIsPoZQJ8B3q59Jj2XiBAwVVKaZlllkmU1XzzzadGH330hD0tSKBTBFgvO0Wa8ZAACVRBgG1WFRQZRi8T4DvQy6XHtPcCAQquUkpLLrmkWmONNWx5jTvuuF1R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QFXhJpcO00YCJEACJEACJEACJEACJEACJKAouLISkAAJkAAJkAAJkAAJkAAJkAAJNJoABddGFw8TRwIkQAIkQAIkQAIkQAIkQAIkQMGVdYAESIAESIAESIAESIAESIAESKDRBCi4Nrp4mDgSIAESIAESIAESIAESIAESIAEKrqwDJEACJEACJEACJEACJEACJEACjSZAwbXRxcPEkQAJkAAJkAAJkAAJkAAJkAAJUHBlHSABEiABEiABEiABEiABEiABEmg0AQqujS4eJo4ESIAESIAESIAESIAESIAESICCK+sACZAACZAACZAACZAACZAACZBAowlQcG108TBxJEACJEACJEACJEACJEACJEACFFxZB0iABEiABEiABEiABEiABEiABBpNgIJro4uHiSMBEiABEiABEiABEiABEiABEqDgyjpAAiRAAiRAAiRAAiRAAiRAAiTQaAIUXBtdPEwcCZAACZAACZAACZAACZAACZAABVfWARIgARIgARIgARIgARIgARIggUYToODa6OJh4kiABEiABEiABEiABEiABEiABCi4sg6QAAmQAAmQAAmQAAmQAAmQAAk0mgAF10YXDxNHAiRAAiRAAiRAAiRAAiRAAiRAwZV1gARIgARIgARIgARIgARIgARIoNEEKLg2uniYOBIgARIgARIgARIgARIgARIgAQqurAMkQAIkQAIkQAIkQAIkQAIkQAKNJkDBtdHFw8SRAAmQAAmQAAmQAAmQAAmQAAlQcGUdIAESIAESIAESIAESIAESIAESaDQBCq6NLh4mjgRIgARIgARIgARIgARIgARIgIIr6wAJkAAJkAAJkAAJkAAJkAAJkECjCVBwbXTxMHEkQAIkQAIkQAIkQAIkQAIkQAIUXFkHSIAESIAESIAESIAESIAESIAEGk2Agmuji4eJIwESIAESIAESIAESIAESIAESoODKOkACJEACJEACJEACJEACJEACJNBoAhRcG108TBwJkAAJkAAJkAAJkAAJkAAJkAAFV9YBEiABEiABEiABEiABEiABEiCBRhOg4Nro4mHiSIAESIAESIAESIAESIAESIAEKLiyDpAACZAACZAACZAACZAACZAACTSaAAXXRhcPE0cCJEACJEACJEACJEACJEACJEDBlXWABEiABEiABEiABEiABEiABEig0QQouDa6eJg4EiABEiABEiABEiABEiABEiABCq6sAyRAAiRAAiRAAiRAAiRAAiRAAo0mQMG10cXDxJEACZAACZAACZAACZAACZAACVBwZR0gARIgARIgARIgARIgARIgARJoNAEKro0uHiaOBEiABEiABEiABEiABEiABEiAgivrAAmQAAmQAAmQAAmQAAmQAAmQQKMJUHBtdPEwcSRAAiRAAiRAAiRAAiRAAiRAAhRcWQdIgARIgARIgARIgARIgARIgAQaTYCCa6OLh4kjARIgARIgARIgARIgARIgARKg4Mo6QAIkQAIkQAIkQAIkQAIkQAIk0GgCFFwbXTxMHAmQAAmQAAmQAAmQAAmQAAmQAAVX1gESIAESIAESIAESIAESIAESIIFGE6Dg2ujiYeJIgARIgARIgARIgARIgARIgAQouLIOkAAJkAAJkAAJkAAJkAAJkAAJNJoABddGFw8TRwIkQAIkQAIkQAIkQAIkQAIkQMGVdYAESIAESIAESIAESIAESIAESKDRBIZvdOqcxL399tvq008/dWxaXw4zzDBqoYUWau2o5qcDBgxQn332mY5l6qmnVhNNNFGuGD/88EP13nvvaT8TTjihmmaaaXL5p2MSIAESaBoBtmvdL5EoitSzzz6rfvnlF52YueaaS40yyiiVJqwTcVSaYAZGAiRAAiTQeALDyMclanwqJYELL7ywevzxxzMndfjhh1e//vprZvd1OJxvvvnUM888o4M+9dRT1U477ZQrmm222Uadd9552s9WW21lr3MFQsckQAIk0CACbNe6Xxhff/21GmeccWxCXnnlFTXLLLPY+youOhFHFelkGCRAAiRAAr1DgKrCvVNWTCkJkAAJ9GkCb7zxhtpggw1Uv3791Msvv9yn8zq0Z+7EE09USy+9tDrqqKM6joL17E/kZPEnC16RAAk0n0DPqAr7KMcdd1zfKnaPGVcaEiABEiCB3iGw9957q1tuuUUneMiQIerOO+/sncQzpZkJQE15zz331O7vv/9+teSSS3Z0aQ/r2Z9FRRZ/suAVCZBA8wn0pHS3wgorqDvuuKP5dJlCEiABEiCBzAR+/vln69a9tpa86BME/LL17+vOpBufe113vE0M382/e93EtDJNJEACJEBVYdaBoZ4AlnkfcMABdqOSoR5IHwfw6quvqgsuuKCP57I3s3fkkUfqmTdsrHf00UdXlgmWeWUoKwkIe1bstddeaqqpplK77767nnGtJOD/BdKuvOuqZ1XmoVNhkUWnSDMeEiCBKgj05IxrFRlnGCQAAhBa+/fvr8466yx10EEHEUofJ/DSSy+pZZddVv3tb3/r4zntzexhQ7vHHnus0sSzzCvFWVlgxx13nMJf1SZLeddRz6rOR6fCI4tOkWY8JEACVRAY6mdcIbjk3X0Y7v/444/C/H/77Tf1/fffF/bfyiNVfVrRiT9D2W+77bZaaI0/6Rt3v//+u8JfGWOOyygSRhV1MUv8WeN54YUX9GYw5oiqvHmqgme7OIu0RybMTqTPxNWE359++qltMoqWeZaw20buOchaTz1vsdss70PMg3ODPFWRBifIxGXdcfz444+JOF2LouXthtGJ6yLlWEXZFYk3xKNIWtDvwR8NCZAACZQhMFQIrjgDdrHFFrN/+Phdc801arXVVlN/+ctf1BhjjKFnYU444YRUddFHHnlEbbjhhmrWWWdVo446qj7zbqaZZlJ77LGH+vLLL9uWwTfffKMOPfRQ6x9xwv/mm29uz2ptG0jAATq6Z599ts7L5JNPrkYeeWSF39VXX11dfvnlAR+trb799lu11FJLWVbHHntsqoczzzzTugNfc+as6+HNN99UcIdZzRVXXFH/QUXs3//+t/r8889dp7Hrww8/3IYNtyFz/vnnWzcIM4/BwANm3cxxQ/CLHS4XXXRR+4ddL0OmaJ5CYaXZ4cxixA9uK620ks2nW49DzN9991213XbbKYyijz766Gq00UbT1zvuuKP65JNPgtH93//9nw3/9NNP1+Wyyy67qDnnnFPX87/+9a9q++23V0899VTQv7EsWhexMYvJ1/PPP69nwfEu4txjnC2JMyYxI24MOseHHHKILi+8v6jzOOcY9fb22283zmK/2AwG5fvFF19o+0suucSWsynzr776KuYHN0V4JgLxLKpoj0yQedKHsjWc11prLc3ZhOP+Yv8A4+7qq692H8WusfuvcQdV+yoMjg0zYYZUhe+77z61zDLLqPHGG0/XDRzpgroOdcePP/44loS8ZZ4n7FhEKTdF6imCqup9RFgPPfSQ3qUZ3xq0B/ibffbZFY4kqsoUiQNH5bjfmbQz2tFm4RuLNgIbMuLbi2/n3HPPrXcjHjx4sM1GnvJuV89MoBikvv766/W3e91119VtyGabbaZnipHvVqZsORatP3nb0ywsirbtKGdwmG666fT7irYaZ9qDJTZeQ7g0JEACJJCLgDQcPWFkzRNaOP0nmzPlSrMIndYvwthiiy1i9yZc/K6//vqRzFzY8EXAif7+979Hww03XKof6URFIsxYP+Zi3nnnTfXjxikf5Oi2224z3uzv1ltvbf3LOa7W3lzIRz0Soca6ccM011tuuWX0ww8/GC+ZfqVDYcMUwScSATPhT4T/SIQF6w55dQ2eywcrGmGEEawbkybzO/7440eXXnqp681eizqn9SdCrLV3L0R4sW5EKHYftbyWUd9ok002sX5NevzfHXbYIRZO2TzFAku5QX078MADI+mgtU0f0ivnL9qQRBiLxhxzzFR/IghGsoOndW8uXNYixEUy8BEMA3XhiSeeMN5iv2XqouwAbuMT4SGSWXB775bJeuutF8natUgGj4LPjdudd945lrYnn3wyGnvssVv6gV/kwTVFebphhK7LtEdueHnTJ7v1xhiIkO8GZ69FMLTuRECw9u6FdNqtG7C78sor3cctr1u1a62eSQc7Fqcpb/OLeoR3FCZvmecJu2Xm/vewSD014VbxPqLN32233aJhhhmmJTPDzm1HTDra/ZaJ4/3334+lSwTQRHTXXXddJANTMXcmveZXBmC0v7zl3aqemYQgTBHyW8a/9tprRx999JHxEvstU45l6k+e9hQJbseiaNuOfsP000/fkh++dTQkQAIkkIcARrx6wriC61hjjRUtuOCCLf8gNBnjdxTNR09GbiPZHCKSUehY47rffvsZr5GMGMaeGb/+r8wSWD/mIqvgirAg4A0YMMB41b+tPigQrmWmIZY2hDHllFNGI444YsxeNr+IhdvuBsKNm7+DDz444eWcc86JuZEZbOsGzGSEP/bcDc+/hnDtG/ejX7XgKscwZEqbK7hWkSc/j6F71D2fj3+PjgmEN/zJ7J0O5uabb074Q6dvggkmiNlDIP7www9jUbus3bjgf5pppon5xyDLBx98EPNfti66HS0MHLlpcK8hkKIz7tqlXd977706jeggtxLmXf+u4FqGZwxO4KZMe2SCK5I+DIq4HUkMevnmtddeS/B9/PHHfWeRzJhYdxjokJmphJs0i1btWtoz0ViJZPbdxolyw4Ch39bJEowob5nnCTstT7593nrq+i/7PiKs0OAs3n1870LCbBHBtUwc7QRX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EiCBvkWAgmvfKs9Kc4ONJyDAyWi4DhebJ6HzSlM9gVNPPVVvAoWQZfZcb6QkauBWkEAZyLpUhZ2Y3333XZ0ADExg0ysjtFWfKoZIAiRAAiRAAiRAAiRAAs0g0LkpmGbkl6nIQUA2urBCK7xhl0CaegjgmBtjsIurbAJmhVbYQ5iVNa6xXahljVnlu4WaNPCXBEiABEiABEiABEiABJpEgIJrk0qjQWmBSs/xxx9vU4RjVGR9q73nRbUE3ON/oI6No5ZCRtb2WmvMtHZKZc1GygsSIAESIAESIAESIAES6AKBahdZdiEDjLIeAjhfVjZXsIHvu+++VEm1NKq/kM2l9MHssihdn9uKtbz9+vXT6/dk8xm9zlU2+1JyxJONfPnll9frV60FL0iABEiABEiABEiABEigjxLgGtc+WrBlsgXhCYKTnOmog8E6Vzk+Jaa6WiZ8+g0TOPnkk9Vuu+0WfujZYob27rvv1oKt94i3JEACJEACJEACJEACJNDnCFBVuM8VafkM3XbbbVZoRWh77rknhdbyWNuGsOuuu+rZVjlmIXUHYOymKUcoqWeeeYZCa1uidEACJEACJEACJEACJNBXCHDGta+UZIX5kDP91GuvvWZDXG211doeDWMd86ISAt99953CETk49gObME0yySQKx0B0+libSjLDQEiABEiABEiABEiABEigJAEKriUB0jsJkAAJkAAJkAAJkAAJkAAJkEC9BKgqXC9fhk4CJEACJEACJEACJEACJEACJFCSAAXXkgDpnQRIgARIgARIgARIgARIgARIoF4CFFzr5cvQSYAESIAESIAESIAESIAESIAEShKg4FoSIL2TAAmQAAmQAAmQAAmQAAmQAAnUS4CCa718GToJkAAJkAAJkAAJkAAJkAAJkEBJAhRcSwKkdxIgARIgARIgARIgARIgARIggXoJUHCtly9DJwESIAESIAESIAESIAESIAESKEmAgmtJgPROAiRAAiRAAiRAAiRAAiRAAiRQLwEKrvXyZegkQAIkQAIkQAIkQAIkQAIkQAIlCVBwLQmQ3kmABEiABEiABEiABEiABEiABOolQMG1Xr4MnQRIgARIgARIgARIgARIgARIoCQBCq4lAdI7CZAACZAACZAACZAACZAACZBAvQQouNbLl6GTAAmQAAmQAAmQAAmQAAmQAAmUJEDBtSRAeicBEiABEiABEiABEiABEiABEqiXAAXXevkydBIgARIgARIgARIgARIgARIggZIEKLiWBEjvJEACJEACJEACJEACJEACJEAC9RKg4FovX4ZOAiRAAiRAAiRAAiRAAiRAAiRQkgAF15IA6Z0ESIAESIAESIAESIAESIAESKBeAhRc6+XL0EmABEiABEiABEiABEiABEiABEoSoOBaEiC9kwAJkAAJkAAJkAAJkAAJkAAJ1EuAgmu9fBk6CZAACZAACZAACZAACZAACZBASQIUXEsCpHcSIAESIAESIAESIAESIAESIIF6CVBwrZcvQycBEiABEiABEiABEiABEiABEihJgIJrSYD0TgIkQAIkQAIkQAIkQAIkQAIkUC8BCq718mXoJEACJEACJEACJEACJEACJEACJQlQcC0JkN5JgARIgARIgARIgARIgARIgATqJUDBtV6+DJ0ESIAESIAESIAESIAESIAESKAkAQquJQHSOwmQAAmQAAmQAAmQAAmQAAmQQL0EKLjWy5ehkwAJkAAJkAAJkAAJkAAJkAAJlCRAwbUkQHonARIgARIgARIgARIgARIgARKolwAF13r5MnQSIAESIAESIAESIAESIAESIIGSBCi4lgRI7yRAAiRAAiRAAiRAAiRAAiRAAvUSoOBaL1+GTgIkQAIkQAIkQAIkQAIkQAIkUJIABdeSAOmdBEiABEiABEiABEiABEiABEigXgIUXOvly9BJgARIgARIgARIgARIgARIgARKEqDgWhIgvZMACZAACZAACZAACZAACZAACdRLgIJrvXwZOgmQAAmQAAmQAAmQAAmQAAmQQEkCFFxLAqR3EiABEiABEiABEiABEiABEiCBeglQcK2XL0MnARIgARIgARIgARIgARIgARIoSYCCa0mA9E4CJEACJEACJEACJEACJEACJFAvAQqu9fJl6CRAAiRAAiRAAiRAAiRAAiRAAiUJUHAtCZDeSYAESIAESIAESIAESIAESIAE6iVAwbVevgydBEiABEiABEiABEiABEiABEigJIHhS/qndxIggYwErrnmGvXLL7/EXE822WRq8cUXj9nxhgRIgARIgARIgARIgARIIE5gmEhM3Ip3TSPw8ccfq6+//jqRrDHHHFNNMskkCft2Fijy33//XTsbfniOXbTjVdXzYYYZJhHU6quvrm688caEPS36BgG+a0r9+uuvasiQIbZAxxlnHDXccMPZe14UJ1D1t6F4Sv7rE98V1Hm0db1Wxr2c9rLlltX/N998owdfRxhhBDXWWGNl9WbdNa2+2oQVvKiqzqB9RDsJM9JII6kxxhijYIrojQT6PgGqCvdAGR9yyCFqpplmSvyttdZahVJ/zDHHKHx48PfWW28VCoOeihP4y1/+ohZZZBH9h3Kl6bsEhtZ3DZ2w4447Tk0zzTRqlFFGUajz5m/AgAF9t8A7nLOqvw1lkz/aaKPp78qmm25aNqiO++/ltHcK1iabbKLf46mmmqpQlE2rr4Uy4XgqU2deeeUVtdJKKykM5I099ti2fdxmm22cGHhJAiTgE+B0m0+kgfeYFR1xxBFtynx1U/sg44UZ2cvovBJnH3zwgTrqqKN0WBC4l1lmmUrC7cVAll9+eXXJJZf0YtKZ5pwEuvGu5UxiLc733HNPdeqpp9YSNgP9k0DV34Y/Qy521cv1vUjazznnHPXSSy+p0UcfXR199NHFoPWgrz/++KNQqptWXwtlwvFUpM7A+/vvv68WWGAB9cMPPzih8ZIESCALAc64ZqHUZTenn366+vnnn+3fdNNN1+UU5Y/+888/V8gH/p5//vn8AdAHCZBATxD45JNP1JlnnqnTOvHEEyvMOj/zzDPq1Vdf1X9TTz11T+SjFxLZF74NvcA5LY233367/qaddtppaU5o7xBgff0vjGOPPdYKreutt566/vrrbft4wgknOMR4SQIk4BPgjKtPZCi433bbbdXSSy+tczr55JMPBTlmFkmgOwSGxnftzTffVL/99psGDpXRffbZpzvwGWvHCTzxxBN6DSTUwnvN9HLae411X0lv0ToDNWEYzED/61//4prWvlIhmI+OEKDg2hHMzYpkwgknVPijIQESqJfA0PiuDR482EJddNFF7TUv+j6B+eabr2cz2ctp71noPZ7wonXGtJGzzz47hdYerwNMfucJ9IzgijWBWEuChez777+/euihh9Stt96qHnjgAfXTTz+pOeaYQ+2444563UArjNgY5IorrlAvvviiwqjXuOOOq+aaay612mqrqRVXXNF6/eKLL7SKGywwO+k+s44CF9iQ5LPPPlMzzDCD2mqrrQIuOm/13XffqZNPPlmF1qX0799fjTfeeG0Tdffdd6uLLrpIDRw4UH344Yd6R8GJJppIzT///Ao7484zzzyJMPbbbz8b56effmqfo9zcezz461//qnbYYQfrhhf/JZC1vhpel19+uVXFXmeddVLfhzPOOEO999572tvWW2+tpp9+ehOEOvfccxXiRfnutttu6rzzzlP33Xefeu6559S0006rw9x+++1bDn5Atf2ggw7SYWItD9Jy//33q7POOku9/vrrWu0dKqP9+vVT2PADG4W5BnX1sssuU48//rh+V/FOzTrrrGruuefW7zk2s2hlitRXN7yi/qt412655RZ155136nyjHcIGR2jfNttsM5W2TADquUbFDEzhB+0c2keo5mMzlcUWW0ztu+++sfXybp6LXrtxIwwzm4BrlPfDDz+MS2v22msvNcEEE9h7c4EyxppBtM2YtR155JF1vrGRGfIe2pXb+MUvuOG7AHPggQfqndOhmoiyxJqy8ccfX9cf1Gm0z2UNVKBRPth86tBDD00NDu8S3ikYfGdQDq557bXX1M0336yefPJJhb0AsKwC5YX6Pu+886qNN95YDTtsM1f1QFUWauC+QdpbbR7o1plO11eT1iJpv/fee/W7acIwdf37778PahZA4wJtZsiUaePKtK9V1Tek/4ILLtDfBtQB1Fm09cgzjnmry5ThVjZNReoM4jT9VxO/6f+88847iXqDth7vPA0JkEAKAdm6vieMdHxxbE8knZlIOmSRfMj1PezMn2xgFF133XWp+ZEOeCS7wFn3xp/53WWXXSL5IGj/sgFSNOqoo2q3a6yxRmqY7gNZaB+J6of2s9FGG7mPKr2WzquOQ4TGTOFK45iaZ+kgtgxDPhLR2muvneof7JBnUQ1MhCPHIbT0Z7jjV2ZmEv77moXJr3yUMmUtT301AcrgTiQdac190kknjaQTbB7Z36uuusqWi3Q0ItR118jGWfq5DGhEW2yxhXVr0o/fKaecMpJOm+stdi3HJlh/sktiJEKovXfDwfXVV18d8ytCRiSDRanuEbeoaMX8mJsy9RVhlPVf5l378ccfI+n0peZbjkiIZGDCZDX2+/LLL1t/IrRFaBt8zrhfeOGFE+UdC6jAjRt3KE7fTgYuErGIwBmhvvpuzb3svhmJYJvw51rsscce1v/bb78dzTnnnPbehIPfWWaZxfVW+HrLLbe04T/11FOp4ey9997W3W233RZzd/bZZ9tnbhrd6+WWW65t3k2geb8Nxl/RX1EFD6Z/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RSaOBEiABEiABEiABEiABEiABEigNgIUXGtDy4BJgARIgARIgARIgARIgARIgASqIEDBtQqKDIMESIAESIAESIAESIAESIAESKA2AtycqTa0DJgESIAEeofA4MGD1cMPP5xI8HLLLaew2RwNCZAACZAACZAACXSTAAXXbtL/X9y//vqrGjJkiL4bffTR1cgjj9w2Vb///ruKokgNM8wwarjhhmvrvkoH3Yy7yny0Cuu3335Tb7/9dtDJNNNMo0YYYYTgM1qSgEsA7yjeF5jhh292c3vXXXeprbfe2k2+vr755pvVqquumrCnBQmQAAmQAAmQAAl0kgBVhTtJOyWuxx57TM9oYFbjkksuSXEVtx5ttNG08LTpppvGH3TgrptxdyB7OorPPvtM4dzV0N8999zTqWQwnh4ncMwxx+j3FAMdb731VqNzM+GEE6pFFllE/0066aSNTisTRwIkQAIkQAIkMPQRaPYUwNBXHplzjFnavOacc85RL730ksKs7tFHH53Xu3VfJG7ruYcuRhxxRJvaX375xV7zggSyEuildwWzqmZm9aqrrlLrr79+1mzSHQmQAAmQAAmQAAnUToAzrrUjbk4Et99+uzr99NPVaaed1pxENTQlE088sfr555/t36WXXtrQlDJZJEACJEACJEACJEACJND3CXDGtUfL+IknnlCYBezGpindjLtHi4vJHkoJbLvttmrppZfWuZ988smHUgrMNgmQAAmQAAmQAAmUJ0DBtTzDroQw33zzdSVeRNrNuLuWaUZMAgUIYN0o/mhIgARIgARIgARIgATKEehJwfWPP/5Ql112mXr66afVK6+8ot577z010UQTqemnn15tsskmaplllkmlcsstt6g777xTvfjii+qLL75Q2CF2jjnmUJtttpmabrrpgv6wYRLWho4zzjhq//33Vw899JC69dZb1QMPPKB++ukn7X/HHXdUCyywQNC/sXzkkUfU1VdfrZ588kntb9FFF1XrrLOOGnbY9hrbUPN95plnTFD2d9ZZZ1VrrbWWvXcv7r33Xp1XYwdWMN9//73aZ599jLX9xezQtNNOa+/NRZG4jV/z2w3uyOfdd9+t7rjjDr1D8AcffKA3ypllllkUuIH9jDPOaJLYyN8BAwaoK664QtdXlN+4446r5pprLrXaaqupFVdcMZHmyy+/XD3//PPaHvlLq5Nn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LrrI7L333k00KLg2IeEFEiABEiABEiCBHhCg4NoD6HxkNQnA8NO6666bOXNQQT7//PMzhy8qIAXXokgyHhIgARIgARIgARIggaIITF9URIyHBOpOAOrfun9sFhawOktHAiRAAiRAAiRAAiRAAiTQTICCazMTXiGBTASwJvTggw9uue9qq4h9Q1Kt/PEeCZAACZAACZAACZAACdSNAFWF61bizC8JtCEwadIkO3M8yyyzmD322KONb94mARIgARIgARIgARIggc4ToODaecZ8AgmQAAmQAAmQAAmQAAmQAAmQQA4CpdvHNUdeGZQESIAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEKLiWsNCYZBIgARIgARIgARIgARIgARKoEwEKrnUqbeaVBEiABEiABEiABEiABEiABEpIgIJrCQuNSSYBEiABEiABEiABEiABEiCBOhGg4Fqn0mZeSYAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEKLiWsNCYZBIgARIgARIgARIgARIgARKoEwEKrnUqbeaVBEiABEiABEiABEiABEiABEpIgIJrCQuNSSYBEiABEiABEiABEiABEiCBOhGg4Fqn0mZeSYAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEKLiWsNCYZBIgARIgARIgARIgARIgARKoEwEKrnUqbeaVBEiABEiABEiABEiABEiABEpIgIJrCQuNSSYBEiABEiABEiABEiABEiCBOhGg4Fqn0mZeSYAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEpi9hmplkEiglgWuvvdb85z//aUj7YostZoYMGdJwjSckQAIkQAIkQAIkQAIkQAKNBKYJxDVe4lm/EXjrrbfM1KlTm5I155xzmkUWWaTpersLKPIvvvjCept+eo5dtONV1P1pppmmKaott9zS3HTTTU3XeaEaBOr8rqGNQf5R76ebbrrMBfrBBx+Yzz77zIafaaaZzBxzzJE5rroFVHbTTjutmXfeedtmv9f1tag60zajPfTw+eefmxdeeCEyBcsss4yZYYYZIu/xIgn4BOrwrvj5zXLMdy0Ltf4PQ1Xh/i8jM3bsWDNw4MCmv+HDh2dK/UknnWQ/jvhAPv/885niYKDsBL7yla+YddZZx/6hXOmqS6DO79pss81m25ldd901dQE/+eSTZtiwYWaeeeYxc889t8E7g7+RI0emjqvOAbbaaivLbaWVVkqEodf1NU+dSZTBPvD097//velbrt/3O++8sw9SyCSUgUAd3pW85cB3LS/B/gzP6bb+LJeGVGFWdMYZZ3TXwuqm7kbCA529SOi9EG+vv/66OfHEE21cELg32GCDQuItYyQbb7yxueKKK8qYdKY5JYFevGspk9gx71nz/tprr5k111zTfPTRRx1LGyOOJpClzIps27M8Pzon/X21yO95f+eUqesUgbq8K3n58V3LS7D/wnPGtf/KpClFZ599tvn000/d37LLLtvkp98vvPvuuwb5wN9jjz3W78ll+kiABHpE4OSTT3ZC67bbbmtuuOEG89RTT9m/U045pUep4mPjCLBtjyMTfX3hhRd233J816+88spoj7xKAiSQiwDftVz4+jYwZ1z7tmg6l7B99tnHDB061D5g8cUX79yDGDMJ1JxAnd+1hx56yBojg4pvGgc1YThomlx00UVc05oGXk6/va6vWetMzmwzOAmUjgDfldIVGRNcEAEKrgWBLFM0Cy64oMEfHQmQQGcJ1PldW3311TPBffXVV204rMukIaZMCDMH6nV9zVpnMmeYAUmgpAT4rpS04Jjs3ARKI7hiTeATTzxhjXUcddRR5r777jO//vWvzeTJk80nn3xivv71r5sDDjjAro1qRWXKlCnm6quvNn/+858NRvZhaXGVVVYxW2yxhdlkk01c0H/84x8GhirgMDvp33OeIg4mTJhgsCB8+eWXN3vttVeEj+5f+te//mXOOOMM8+WXXzY9fP/99zfzzTdf0/Xwhd/+9rfmsssuMy+99JJ54403zFxzzWUWWmghs8YaaxhYxl1ttdXCQcyRRx7pnvnOO++4+yg3/xw3llpqKbPffvs5Pzz4L4Gk9VV5/fKXv3Sq2N/73vdi34ef//zn5uWXX7bB9t57b7PccstpFOaCCy4weC7K95BDDjEXXnihufvuu82f/vQnM2DAABvnqFGjWg5+QAXumGOOsXFivSLScs8995hzzz3XPPPMM1ZVbumllzbbbbed2WWXXZosaaKuXnXVVeb3v/+9fVfxTq2wwgpm1VVXte85DPa0clnqqx9f1vBFvGu33HKLuf32222+0Q7B0ijat912283ELRN4++23jarRginCoJ1D+wjV/CWXXNJ861vfMkcccUTDenk/z3mPb731VvPoo482RYNya2VITtt2Dahtw1//+ldz+OGH62X7Cw4777xzw7UiT1Dvf/WrXznVZFjuRNu07rrr2vY8bvYY9fP888+3Zfbcc8+ZmWee2ZYZjLCh3KIsiiPdmncYocr6XcNaYLzPeFf+8pe/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sehUZv/+9783fVP0G3PnnXd26rEt4y1zfS9z2lsWSkE3n3jiCfcOn3322alj7cf6miYTCy64oFlnnXXs36KLLpomKP2SAAlUhEC64boSZxojkzPOOKPLQdYNuc8//3yDj8fss89uxo8f7+LjQWsCr7/+ujnxxBOtJwwWbLDBBq0D8C4JFEQAAlwd3ejRo82ZZ55Zx6x3Nc9FfFeKTHCZ63uWtNf1m/zll19mqjb9Vl/TZAKzqjqzes0115jtt98+TXD6JQESqACB2sy4YnTy008/dX/LLrtspuK79dZbDeI666yzMoWva6B3333XcgO7xx57rK4YmG8S6AqBt99+25xzzjn2WQsvvLA56aSTzKOPPmqeeuop+7f00kt3JR1VfwjY+t+VK6+8supZ7rv88ZucvEhYX5Ozok8SIIH+JFCbGdf+xM9UkQAJdJrAQw89ZKBhUSfjHc8995zBejY4qEgffvjhncbM+PuEQJnre5nT3ifFz2SQAAmQQKUJUHCtdPEycyRAAquvvnrtIMD6prp1111XD/lbAwJlru9lTnsNqhazSAIkQAI9J1AqwfXpp582sB738MMPG6yZhPrpkksuaVZYYQXzjW98w+y8885m2mmL1X6+6667zO233+4K6sknn7TH//73vyNnMfbZZx8zYMAA598/wJqUq666yvz+9783f/7znw0MJSDtq666qjnggAMMrATGOaijHXPMMfb2mmuuab73ve+Ze+65x5x77rnmmWeesepqUP/bbrvtzC677OKsWV5xxRV2TS6siB511FHmvvvuM7/+9a/N5MmTzSeffGK+/vWv22cjziiHfP72t781t912m7WeCe6wlDl48GCbdqTja1/7WlRQc+SRRxpdh/POO+84P3i+f44bSy21lNlvv/2cH/8gDzc/nizHWZ79y1/+0qlDg08c25///Ofm5ZdftsmCpcTlllvOHuMa7sFhtgzWcFGO9957r/n444/NGmusYTbddFOz1VZbWT9x/2655RZb3rj/ox/9yMBiJ1S1UZ6vvfaamX/++W3dO+SQQ8zyyy/fFE2WvPuR4DmXXXaZeemll8wbb7xh5pprLrPQQgvZ9G+55ZZmtdVW8703HL/33nt2feYf/vAH87e//c3WVYRFPdlkk03MZpttZuNrCPS/E6gOQi027PCuJTXGBnZ47/Ge/uMf/7AGjvCu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XiUBEiABEiABEiABEqgNgaOPPtp8+OGHZuGFFzaLLLKIWXfddc2yyy5bm/wzoyRQFQLTBOLKmpk//vGPZvPNNzdvvfVWQxZ++9vfmg033LDh2j//+U/z6aef2mvzzTefmWaaaRru86T/CHz++efmhRdeiEzYMsssY2aYYYbIe924iAGSzz77zD5qpplmMnPMMUc3Hlv5Z/RjmX/xxRcGzSTajOmmm65UZVDmtHcDNOrb1KlT7aPmnntuM/306cZy+7G+5uGGeo46A5eWhf9ctI1oI9XNM888pXt3NO3d/vXZzT777GbmmWdum4RevudF1Zm2mczpYemllzYvvfSSi2Xaaac1P/zhD824cePcNR6QAAmUgIA0OqV1MmIGodv+fe1rXwv23XffQBqiQATZpjztuOOOzu/777/fdJ8X+o/AG2+84cpMy1l/f/Ob33Q9wX/5y1+CTTbZJJAObkO6tt9++66npaoP7LcyB2cZmLDljTakbK7Mae8Gaxn8dO/y6aefnvqR/VhfU2fCC3DiiSc6Hs8995x3p/2haD8FJ598ciACQiADPC4etNnPPPNM+wjowxKYPHmyY3fBBRckotLL9zxPnUmUuYI8nXrqqcGhhx4ayGRHIEKrZYx6+uyzzxb0BEZDAiTQDQLphpflC9QvDiPdjzzyiE3O8ssvb5588kmO6PZL4RSYjhlnnNHFBrXwXrnXXnvNrLnmmuajjz7qVRJq89x+KXMFrjPrel6m3yxpP//8880TTzxhMNszfvz4MmU3V1q//PLLTOH7rb5mysT/AmWpL/q80aNHmzPPPFNP+dtFAlnKraj3PMuzu4jGPUqEVnc8YcIEc/jhh1vtggcffNCgD0lHAiRQDgKlNc70t7/9zaggs95661FoLUd9S5VKrEWBerf+XXnllanCF+lZZhKc0LrtttuaG264wTz11FP275RTTinyUbWOq5/KvK4Fceutt5qzzz7bnHXWWXVFkDjfrK//RfX222+bc845x56AyUknnWQeffRR10ZCTZOuvwjU+T0fOnSoK4xXX33VHfOABEig/wmUdsZVhVYgxppVOhLoJAHM6MNh3ddFF13ENa2dhN1ncT/00EN2kOwrX/lKn6WsfXLKnPb2uaOPognss88+Rjv1iy++eOLoRa3YQAsKbtddd7WzWYkD02NuAr18z7PWmdyZzhGB32eUpWM5YmJQEiCBbhMoreDqg8IiezoS6CQBHZVdaaWVKLR2EnQfxr366qv3YaqSJanMaU+WQ/oqksCCCy5o8JfWafuIcLDWStddAr18z7PWme4Sanwa+4yNPHhGAmUiUAnBtQjgUGu65pprbFSwEHvMMcc0RYs1UFdddZX5/e9/b/785z+bv//972aFFVYwq666qjnggAMMrFKG3RlnnGFef/11a5H0uOOOi7UQ+O9//9tat5OFzWbQoEFm9913D0dln3faaac1XEc6Z5llloZrRZz86U9/MldffbWNaosttjDf+ta3YqP9+c9/bl5++WWbjh//+McNFpuRL1h5vu2226yFYLCANeDBgwdbdt/73veMGNaKjbtXN6644gq7zk+fj62W4LDtEtbG+O7rX/+62Xnnnf1L7hh1BGuJUF8wKwELkfC/zjrrmN12262BlQv0vwOoSGs9xPpasLrnnnvMueeea8TYiVWhhgredtttZ3bZZZdCrCxDxe8f//iHLUvU1zg3ZcoUI4ZD7O1w/ShrmWteoUKH9iDs8K4PHz48fNmda52BBdWjjjrK3HfffebXv/61EWMr5pNPPrHljnYCZdkplyXtd911l7n99ttdklS7AOUYruvwhBmWAQMGOP/+AeoF2g3Ud8Qz77zzmlVWWcWgjohhM99r0/Ett9ximeHGj370I7v+DCrLaD+wxnz++ee3be0hhxzStCbt6aefttuiPfzww7a9fffdd82SSy5p25hvfOMb9v1M0llFPFiScO+991qruGussYbZeOONjRhga0pvkReyfFuKeP6//vUvg29U1Pre/fffP1abCarB/hIJrTNIE9qn+++/vyF5Y8aMMQsssEDDtaJOlN0f/vAHW+fwLVpooYXMcsstZ9vFDTbYIPZRqHOo+6ivaPdgrR7tM9rmuK1SinrPf/e735mJEyca1Fm0DxD40cYnqae9fM+z1hm/EHrJ3U8Hj0mABEpIoBsWoDrxjMcff9xZ3oMl4XaulVVh+cgGc845p40P1vluuummpuik4xSICpV7phR1w/FXv/rVQNR1msJJx8/5++Uvf9l0Xy9cdtllzl9cfqQz7fzo89977z2NotBf+fgHsv2Hfd6mm24aGzcsNItxEutPOnlN/mS9U1OaNe34nW222QLpKDaFi7oAfxq201aFpQPhnqXPjPuNsyosgkuw6KKL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HdKq6zSxfhCzxXQkQAIkQAIkQAIkQAKdIQAtJ/QZ1WGQ4MQTT3SadnqdvyRAAv1N4L+6Vf2dxtjUwRAGrLZCRQ1GJDBiCjVfqHb1o0NafRXkAw44oB+TyTSRAAmQAAmQAAmQQGUIYDkBjLYtsMACdkYe2+CEl0FUJrPMCAlUmECpZ1zLUi6YFca2ErCmqw5rb6AurGtc9Dp/SYAESIAESIAESIAESIAESIAEGgmU1jhTYzb6+wzqKb7QirUs2BOTQmt/lxtTRwIkQAIkQAIkQAIkQAIk0B8EOOPahXK45pprjJjAt1Yu11prLWtttwuP5SNIgARIgARIgARIgARIgARIoBIEKLhWohiZCRIgARIgARIgARIgARIgARKoLgGqCle3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BCi4VrdsmTMSIAESIAESIAESIAESIAESqAQBCq6VKEZmggRIgARIgARIgARIgARIgASqS4CCa3XLljkjARIgARIgARIgARIgARIggUoQoOBaiWJkJkiABEiABEiABEiABEiABEigugQouFa3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BCi4VrdsmTMSIAESIAESIAESIAESIAESqAQBCq6VKEZmggRIgARIgARIgARIgARIgASqS4CCa3XLljkjARIgARIgARIgARIgARIggUoQoOBaiWJkJkiABEiABEiABEiABEiABEigugQouFa3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BCi4VrdsmTMSIAESIAESIAESIAESIAESqAQBCq6VKEZmggRIgARIgARIgARIgARIgASqS4CCa3XLljkjARIgARIgARIgARIgARIggUoQoOBaiWJkJkiABEiABEiABEiABEiABEigugQouFa3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BKavbtaqn7NbbrnFfPrpp2allVYyyy67bOIMX3vtteY///lPg//FFlvMDBkypOEaT0iABEiABEiABEiABEigFwReffVVc//99zc9eqONNjJf+cpXmq5HXXj44YfNa6+9ZhZeeGGz9tprR3nhtRIRqIzg+tlnn5kPPvjAop999tnNzDPP3LYYvvjiCxMEgZlmmmnMdNNN19Z/P3m49dZbzRZbbGGTNHny5FSC67bbbtuUlS233JKCaxOV6lxAPUd9h5t++sq89qkKyG8jEHCeeeYp3XufKsNd9PzWW2+ZqVOnNj1xzjnnNIssskjT9U5fKHN9L3PaO12uGv+HH35oB19nmGEGM9dcc+nlxL/9Vl8TJzzGY1F9GfSh0E7CzTTTTGaOOeaIeSIvhwkou2mnndbMO++84dtN571+z4uqM00ZK/jCHXfcYfbee++mWG+++Waz+eabN12PunDvvfeaI444wswyyyzm+eefN5iooSsvgcqoCj/44IN29AUj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ktpIJvle/vKX792fY4WY/b1MrNFOndS7ugS3KcxPU1j6F1uNTGMKJoUpO6zmb+tXl+yXGAdhXwThm0UMxmD/LW3kEtzvu+++vPBBHbEtgqkKf+c730kLWWPqM+NHDJtid4RJEY7fkjteAkcpuB4v7vlSznmgrNrRiGKk6M1vfvPoyKPg6oFsj2nVMIvfX+KzJrgukQ49UwREQAREQAREQARE4GQJ2JakdK54+dRdBFe0FG0rWtJE8cWHMj79Ph4CElyPp6zWUsoMM7NPWKjdZQWOlcPSsZoWrdWW95f4LcF1Cep6pgiIgAiIgAiIgAgsTwDNJ7SeSrfLuBdNQTQj0JY7lIZgmT79PhyB/z1c1Ir50ARQVd3Hxb2o+4RXGBEQAREQAREQAREQARE4JAGOT+RviovHCE2JR2FPB4GjMc50OnApFSIgAiIgAiIgAiIgAiIgAiIgAidNQCuuJ01czxtN4JprrlnZMRzZ8uDogPIoAiIgAiIgAiIgAiIgAiLQFAHtcW2qOJUZERABERABERABERABERABEWiPgFSF2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9Av8Gix1eZbhTbUMAAAAASUVORK5CYII=" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For more reference, visit...\n", + "\n", + "https://www.w3schools.com/python/python_lists_comprehension.asp\n", + "\n", + "https://www.datacamp.com/community/tutorials/python-dictionary-comprehension" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3: Recursion, Lambdas, and Comprehensions Together!\n", + "Sort the family tree as a list of people from youngest to oldest." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Expected Output:\n", + "\n", + "```python\n", + "[{'name': 'Jayden', 'age': 1},\n", + " {'name': 'Penelope', 'age': 24},\n", + " {'name': 'Skyla', 'age': 46},\n", + " {'name': 'Julia', 'age': 66},\n", + " {'name': 'Irine', 'age': 92},\n", + " {'name': 'Dot', 'age': 111}]\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "family_tree = {\n", + " \"name\": \"Jayden\",\n", + " \"age\": 1,\n", + " \"mother\": {\n", + " \"name\": \"Penelope\",\n", + " \"age\": 24,\n", + " \"mother\": {\n", + " \"name\": \"Skyla\",\n", + " \"age\": 46,\n", + " \"mother\": {\n", + " \"name\": \"Julia\",\n", + " \"age\": 66,\n", + " \"mother\": {\n", + " \"name\": \"Irine\",\n", + " \"age\": 92,\n", + " \"mother\": {\n", + " \"name\": \"Dot\",\n", + " \"age\": 111,\n", + " }\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Jayden', 'age': 1},\n", + " {'name': 'Penelope', 'age': 24},\n", + " {'name': 'Skyla', 'age': 46},\n", + " {'name': 'Julia', 'age': 66},\n", + " {'name': 'Irine', 'age': 92},\n", + " {'name': 'Dot', 'age': 111}]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "def get_person_info(person):\n", + " return {k: person[k] for k in person if k != 'mother'}\n", + "\n", + "def get_people(person):\n", + " person_info = get_person_info(person)\n", + " if 'mother' not in person:\n", + " return [person_info]\n", + " else:\n", + " current_mother = person['mother']\n", + " return get_people(current_mother) + [person_info]\n", + "\n", + "family_list = get_people(family_tree)\n", + "sorted(family_list, key=lambda d:d['age'])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/s24/AmFam_Ashwin/24_Comprehensions/Lecture Code/Lec24_Comprehensions_Template.ipynb b/s24/AmFam_Ashwin/24_Comprehensions/Lecture Code/Lec24_Comprehensions_Template.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..9c8196975f3ed1aed518c464871492a431df03ae --- /dev/null +++ b/s24/AmFam_Ashwin/24_Comprehensions/Lecture Code/Lec24_Comprehensions_Template.ipynb @@ -0,0 +1,641 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1a: Sort this list by the length of each word using a normal function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1b: Sort this list by the length of each word using a lambda" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 2: Sort this dictionary by their total enrollment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "enrollments = { \"Wisconsin\": 45540,\n", + " \"Michigan\": 47907,\n", + " \"Illinois\": 52331,\n", + " \"Iowa\": 30448,\n", + " \"Minnesota\": 52017,\n", + " \"Ohio State\": 61369,\n", + " \"Northwestern\": 22316}\n", + "\n", + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 3: Sort this list of dictionaries by `\"name\"`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "volunteers = [ {\"name\": \"Sky\", \"hours\": 53}, \n", + " {\"name\":\"Patrice\", \"hours\": 72},\n", + " {\"name\":\"Gabriella\", \"hours\": 45},\n", + " {\"name\": \"Jade\", \"hours\": 62} ]\n", + "\n", + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 4: Sort this dictionary of lists by the number of elements in the list" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cities_by_county = {\"Dane\": [\"Madison\", \"Sun Prairie\", \"Middleton\", \"Waunakee\"],\n", + " \"Milwaukee\": [\"Milwaukee\", \"West Allis\", \"Wauwatosa\"],\n", + " \"Rock\": [\"Janesville\", \"Beloit\"],\n", + " \"Waukesha\": [\"Brookfield\"]}\n", + "\n", + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 5: Create a list of all fruits that contain `'berry'`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lecture 24: Iterators and Comprehensions\n", + "\n", + "Learning Objectives:\n", + "\n", + " - Create list and dictionary comprehensions\n", + "\n", + " - Use the correct vocabulary to describe iteration\n", + " - iterable, sequence, iterator\n", + "\n", + " - Determine if an object is an iterable, or if it is an iterator\n", + " - try to use iter() to determine if an object is an iterable\n", + " - try to use next() to determine if an object is an iterator\n", + "\n", + " - Use iterator/iterable language to open and process files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## List Comprehensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Do we have a shorter way to complete Warmup 6?\n", + "\n", + "Yes! Using List Comprehensions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]\n", + "\n", + "[f for f in fruits if 'berry' in f]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What other ways could we filter our fruits list?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fruits = [\"blackberry\", \"apple\", \"banana\", \"fig\", \"blueberry\", \"strawberry\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1: Make a list of all fruits that start with the letter `\"b\"`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[f for f in fruits if f.startswith('b')]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2: Make a list of all fruits with less than 6 characters in their name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[f for f in fruits if len(f) < 6]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3: Make a list of the length of all the fruit names" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[len(f) for f in fruits]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### More List Comprehensions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 1: Convert these Fahrenheit temps to an int in Celsius using `C = 5/9 * (F-32)`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "temps = [32, 45, 90, 212]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Here is the traditional way to do it with a loop" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cel_temps = []\n", + "for f in temps:\n", + " temp_cel = (5/9) * (f-32)\n", + " cel_temps.append(temp_cel)\n", + "cel_temps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Now, try writing it as a list comprehension!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What if temps were strings?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "temps = [\"32\", \"\", \"45\", \"90\", \"212\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Even More List Comprehensions\n", + "\n", + "What ways could we filter this list of volunteers?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "volunteers = [ {\"name\": \"Sky\", \"hours\": 53}, \n", + " {\"name\": \"Patrice\", \"hours\": 72},\n", + " {\"name\": \"Gabriella\", \"hours\": 45},\n", + " {\"name\": \"Jade\", \"hours\": 62}\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Those that have volunteered atleast 60 hours" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[d['name'] for d in volunteers if d['hours'] > 60]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Those with short names" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[d['name'] for d in volunteers if len(d['name']) < 5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What if we wanted to keep the name and hours?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "[d for d in volunteers if len(d['name']) < 5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dictionary Comprehensions\n", + "Same thing as a list comprehension, but with a key *and* value!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 4: Generate a dictionary of numbers and their squares!\n", + "\n", + "e.g.: \n", + "```python\n", + "{1: 1, 2: 4, 3: 9, 4: 16, ...}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nums = list(range(1, 8))\n", + "square_mapping_dict = {num: num**2 for num in nums}\n", + "square_mapping_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What ways could we filter this dictionary of people's scores?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "scores_dict = {\"Bob\": [18, 72, 83], \n", + " \"Cindy\" : [27, 11, 55, 73, 87], \n", + " \"Alice\": [16, 33, 42, 89, 90], \n", + " \"Meena\": [39, 93, 9, 3, 55, 72, 19]}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Here is an old fashioned for loop" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_scores_dict = {}\n", + "for player in scores_dict:\n", + " scores = scores_dict[player]\n", + " new_scores_dict[player] = len(scores)\n", + "new_scores_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Now to do the same with dictionary comprehension" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "{player : len(scores_dict[player]) for player in scores_dict}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### A dictionary of everyone's highest score" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "{player : max(scores_dict[player]) for player in scores_dict}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### A dictionary of everyone's average score" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "{player : sum(scores_dict[player])/len(scores_dict[player]) for player in scores_dict}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2: Reorder the dictionary above so that the names appear in the order of decreasing average scores" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# wrtie your code here\n", + "avg_scores_dict = {player : sum(scores_dict[player])/len(scores_dict[player]) for player in scores_dict}\n", + "dict(sorted(avg_scores_dict.items(), key=lambda item: item[1], reverse=True))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Syntax of Comprehensions" + ] + }, + { + "attachments": { + "comprehensions.png": { + "image/png": "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xcPEkQAJkAAJkAAJkAAJkAAJkAAJUHBlHSABEiABEiABEiABEiABEiABEmg0AQqujS4eJo4ESIAESIAESIAESIAESIAESICCK+sACZAACZAACZAACZAACZAACZBAowlQcG108TBxJEACJEACJEACJEACJEACJEACFFxZB0iABEiABEiABEiABEiABEiABBpNgIJro4uHiSMBEiABEiABEiABEiABEiABEqDgyjpAAiRAAiRAAiRAAiRAAiRAAiTQaAIUXBtdPEwcCZAACZAACZAACZAACZAACZAABVfWARIgARIgARIgARIgARIgARIggUYToODa6OJh4kiABEiABEiABEiABEiABEiABCi4sg6QAAmQAAmQAAmQAAmQAAmQAAk0mgAF10YXDxNHAiRAAiRAAiRAAiRAAiRAAiRAwZV1gARIgARIgARIgARIgARIgARIoNEEKLg2uniYOBIgARIgARIgARIgARIgARIggeF7CcELL7yg3nzzzViSZ599djXTTDPF7HhDAiDwwAMPqE8++cTCGHXUUdVqq61m77t10dR0dYsH4yWBugl8/vnn6t57741Fs8ACC6ipppoqZscbEiCB8gTef/999eijj8YCWmKJJdREE00Us+MNCZAACeQlMEwkJq+nbrnv16+fuvrqq2PR9+/fX51++ukxO96QAAjMMMMM6q233orBaEJ1b2q6YqB4QwJ9iMAVV1yhNtxww1iOjjjiCHXAAQfE7HhDAiRQnsBJJ52kdt9991hA5513ntpqq61idrwhARIggbwEqCrsEPvyyy/VBx984NjwkgS6T4D1svtlwBSQAAlkJ8A2KzsruuybBPgO9M1yZa66T4CC6//KYK+99lKTTz65mmyyydSss86aUHPpflExBUMjAdbLobHUmWcS6F0CbLN6t+yY8moI8B2ohiNDIYEQAQquQuXZZ59VJ5xwgvrhhx80o1dffVUdfPDBIV60I4GOEWC97BhqRkQCJFABAbZZFUBkED1NgO9ATxcfE98DBCi4SiHdcMMNiaK677771HfffZewpwUJdIoA62WnSDMeEiCBKgiwzaqCIsPoZQJ8B3q59Jj2XiBAwVVKaZlllkmU1XzzzadGH330hD0tSKBTBFgvO0Wa8ZAACVRBgG1WFRQZRi8T4DvQy6XHtPcCAQquUkpLLrmkWmONNWx5jTvuuF1R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QFXhJpcO00YCJEACJEACJEACJEACJEACJKAouLISkAAJkAAJkAAJkAAJkAAJkAAJNJoABddGFw8TRwIkQAIkQAIkQAIkQAIkQAIkQMGVdYAESIAESIAESIAESIAESIAESKDRBCi4Nrp4mDgSIAESIAESIAESIAESIAESIAEKrqwDJEACJEACJEACJEACJEACJEACjSZAwbXRxcPEkQAJkAAJkAAJkAAJkAAJkAAJUHBlHSABEiABEiABEiABEiABEiABEmg0AQqujS4eJo4ESIAESIAESIAESIAESIAESICCK+sACZAACZAACZAACZAACZAACZBAowlQcG108TBxJEACJEACJEACJEACJEACJEACFFxZB0iABEiABEiABEiABEiABEiABBpNgIJro4uHiSMBEiABEiABEiABEiABEiABEqDgyjpAAiRAAiRAAiRAAiRAAiRAAiTQaAIUXBtdPEwcCZAACZAACZAACZAACZAACZAABVfWARIgARIgARIgARIgARIgARIggUYToODa6OJh4kiABEiABEiABEiABEiABEiABCi4sg6QAAmQAAmQAAmQAAmQAAmQAAk0mgAF10YXDxNHAiRAAiRAAiRAAiRAAiRAAiRAwZV1gARIgARIgARIgARIgARIgARIoNEEKLg2uniYOBIgARIgARIgARIgARIgARIgAQqurAMkQAIkQAIkQAIkQAIkQAIkQAKNJkDBtdHFw8SRAAmQAAmQAAmQAAmQAAmQAAlQcGUdIAESIAESIAESIAESIAESIAESaDQBCq6NLh4mjgRIgARIgARIgARIgARIgARIgIIr6wAJkAAJkAAJkAAJkAAJkAAJkECjCVBwbXTxMHEkQAIkQAIkQAIkQAIkQAIkQAIUXFkHSIAESIAESIAESIAESIAESIAEGk2Agmuji4eJIwESIAESIAESIAESIAESIAESoODKOkACJEACJEACJEACJEACJEACJNBoAhRcG108TBwJkAAJkAAJkAAJkAAJkAAJkAAFV9YBEiABEiABEiABEiABEiABEiCBRhOg4Nro4mHiSIAESIAESIAESIAESIAESIAEKLiyDpAACZAACZAACZAACZAACZAACTSaAAXXRhcPE0cCJEACJEACJEACJEACJEACJEDBlXWABEiABEiABEiABEiABEiABEig0QQouDa6eJg4EiABEiABEiABEiABEiABEiABCq6sAyRAAiRAAiRAAiRAAiRAAiRAAo0mQMG10cXDxJEACZAACZAACZAACZAACZAACVBwZR0gARIgARIgARIgARIgARIgARJoNAEKro0uHiaOBEiABEiABEiABEiABEiABEiAgivrAAmQAAmQAAmQAAmQAAmQAAmQQKMJUHBtdPEwcSRAAiRAAiRAAiRAAiRAAiRAAhRcWQdIgARIgARIgARIgARIgARIgAQaTYCCa6OLh4kjARIgARIgARIgARIgARIgARKg4Mo6QAIkQAIkQAIkQAIkQAIkQAIk0GgCFFwbXTxMHAmQAAmQAAmQAAmQAAmQAAmQAAVX1gESIAESIAESIAESIAESIAESIIFGE6Dg2ujiYeJIgARIgARIgARIgARIgARIgAQouLIOkAAJkAAJkAAJkAAJkAAJkAAJNJoABddGFw8TRwIkQAIkQAIkQAIkQAIkQAIkQMGVdYAESIAESIAESIAESIAESIAESKDRBIZvdOqcxL399tvq008/dWxaXw4zzDBqoYUWau2o5qcDBgxQn332mY5l6qmnVhNNNFGuGD/88EP13nvvaT8TTjihmmaaaXL5p2MSIAESaBoBtmvdL5EoitSzzz6rfvnlF52YueaaS40yyiiVJqwTcVSaYAZGAiRAAiTQeALDyMclanwqJYELL7ywevzxxzMndfjhh1e//vprZvd1OJxvvvnUM888o4M+9dRT1U477ZQrmm222Uadd9552s9WW21lr3MFQsckQAIk0CACbNe6Xxhff/21GmeccWxCXnnlFTXLLLPY+youOhFHFelkGCRAAiRAAr1DgKrCvVNWTCkJkAAJ9GkCb7zxhtpggw1Uv3791Msvv9yn8zq0Z+7EE09USy+9tDrqqKM6joL17E/kZPEnC16RAAk0n0DPqAr7KMcdd1zfKnaPGVcaEiABEiCB3iGw9957q1tuuUUneMiQIerOO+/sncQzpZkJQE15zz331O7vv/9+teSSS3Z0aQ/r2Z9FRRZ/suAVCZBA8wn0pHS3wgorqDvuuKP5dJlCEiABEiCBzAR+/vln69a9tpa86BME/LL17+vOpBufe113vE0M382/e93EtDJNJEACJEBVYdaBoZ4AlnkfcMABdqOSoR5IHwfw6quvqgsuuKCP57I3s3fkkUfqmTdsrHf00UdXlgmWeWUoKwkIe1bstddeaqqpplK77767nnGtJOD/BdKuvOuqZ1XmoVNhkUWnSDMeEiCBKgj05IxrFRlnGCQAAhBa+/fvr8466yx10EEHEUofJ/DSSy+pZZddVv3tb3/r4zntzexhQ7vHHnus0sSzzCvFWVlgxx13nMJf1SZLeddRz6rOR6fCI4tOkWY8JEACVRAY6mdcIbjk3X0Y7v/444/C/H/77Tf1/fffF/bfyiNVfVrRiT9D2W+77bZaaI0/6Rt3v//+u8JfGWOOyygSRhV1MUv8WeN54YUX9GYw5oiqvHmqgme7OIu0RybMTqTPxNWE359++qltMoqWeZaw20buOchaTz1vsdss70PMg3ODPFWRBifIxGXdcfz444+JOF2LouXthtGJ6yLlWEXZFYk3xKNIWtDvwR8NCZAACZQhMFQIrjgDdrHFFrN/+Phdc801arXVVlN/+ctf1BhjjKFnYU444YRUddFHHnlEbbjhhmrWWWdVo446qj7zbqaZZlJ77LGH+vLLL9uWwTfffKMOPfRQ6x9xwv/mm29uz2ptG0jAATq6Z599ts7L5JNPrkYeeWSF39VXX11dfvnlAR+trb799lu11FJLWVbHHntsqoczzzzTugNfc+as6+HNN99UcIdZzRVXXFH/QUXs3//+t/r8889dp7Hrww8/3IYNtyFz/vnnWzcIM4/BwANm3cxxQ/CLHS4XXXRR+4ddL0OmaJ5CYaXZ4cxixA9uK620ks2nW49DzN9991213XbbKYyijz766Gq00UbT1zvuuKP65JNPgtH93//9nw3/9NNP1+Wyyy67qDnnnFPX87/+9a9q++23V0899VTQv7EsWhexMYvJ1/PPP69nwfEu4txjnC2JMyYxI24MOseHHHKILi+8v6jzOOcY9fb22283zmK/2AwG5fvFF19o+0suucSWsynzr776KuYHN0V4JgLxLKpoj0yQedKHsjWc11prLc3ZhOP+Yv8A4+7qq692H8WusfuvcQdV+yoMjg0zYYZUhe+77z61zDLLqPHGG0/XDRzpgroOdcePP/44loS8ZZ4n7FhEKTdF6imCqup9RFgPPfSQ3qUZ3xq0B/ibffbZFY4kqsoUiQNH5bjfmbQz2tFm4RuLNgIbMuLbi2/n3HPPrXcjHjx4sM1GnvJuV89MoBikvv766/W3e91119VtyGabbaZnipHvVqZsORatP3nb0ywsirbtKGdwmG666fT7irYaZ9qDJTZeQ7g0JEACJJCLgDQcPWFkzRNaOP0nmzPlSrMIndYvwthiiy1i9yZc/K6//vqRzFzY8EXAif7+979Hww03XKof6URFIsxYP+Zi3nnnTfXjxikf5Oi2224z3uzv1ltvbf3LOa7W3lzIRz0Soca6ccM011tuuWX0ww8/GC+ZfqVDYcMUwScSATPhT4T/SIQF6w55dQ2eywcrGmGEEawbkybzO/7440eXXnqp681eizqn9SdCrLV3L0R4sW5EKHYftbyWUd9ok002sX5NevzfHXbYIRZO2TzFAku5QX078MADI+mgtU0f0ivnL9qQRBiLxhxzzFR/IghGsoOndW8uXNYixEUy8BEMA3XhiSeeMN5iv2XqouwAbuMT4SGSWXB775bJeuutF8natUgGj4LPjdudd945lrYnn3wyGnvssVv6gV/kwTVFebphhK7LtEdueHnTJ7v1xhiIkO8GZ69FMLTuRECw9u6FdNqtG7C78sor3cctr1u1a62eSQc7Fqcpb/OLeoR3FCZvmecJu2Xm/vewSD014VbxPqLN32233aJhhhmmJTPDzm1HTDra/ZaJ4/3334+lSwTQRHTXXXddJANTMXcmveZXBmC0v7zl3aqemYQgTBHyW8a/9tprRx999JHxEvstU45l6k+e9hQJbseiaNuOfsP000/fkh++dTQkQAIkkIcARrx6wriC61hjjRUtuOCCLf8gNBnjdxTNR09GbiPZHCKSUehY47rffvsZr5GMGMaeGb/+r8wSWD/mIqvgirAg4A0YMMB41b+tPigQrmWmIZY2hDHllFNGI444YsxeNr+IhdvuBsKNm7+DDz444eWcc86JuZEZbOsGzGSEP/bcDc+/hnDtG/ejX7XgKscwZEqbK7hWkSc/j6F71D2fj3+PjgmEN/zJ7J0O5uabb074Q6dvggkmiNlDIP7www9jUbus3bjgf5pppon5xyDLBx98EPNfti66HS0MHLlpcK8hkKIz7tqlXd977706jeggtxLmXf+u4FqGZwxO4KZMe2SCK5I+DIq4HUkMevnmtddeS/B9/PHHfWeRzJhYdxjokJmphJs0i1btWtoz0ViJZPbdxolyw4Ch39bJEowob5nnCTstT7593nrq+i/7PiKs0OAs3n1870LCbBHBtUwc7QRX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EiCBvkWAgmvfKs9Kc4ONJyDAyWi4DhebJ6HzSlM9gVNPPVVvAoWQZfZcb6QkauBWkEAZyLpUhZ2Y3333XZ0ADExg0ysjtFWfKoZIAiRAAiRAAiRAAiRAAs0g0LkpmGbkl6nIQUA2urBCK7xhl0CaegjgmBtjsIurbAJmhVbYQ5iVNa6xXahljVnlu4WaNPCXBEiABEiABEiABEiABJpEgIJrk0qjQWmBSs/xxx9vU4RjVGR9q73nRbUE3ON/oI6No5ZCRtb2WmvMtHZKZc1GygsSIAESIAESIAESIAES6AKBahdZdiEDjLIeAjhfVjZXsIHvu+++VEm1NKq/kM2l9MHssihdn9uKtbz9+vXT6/dk8xm9zlU2+1JyxJONfPnll9frV60FL0iABEiABEiABEiABEigjxLgGtc+WrBlsgXhCYKTnOmog8E6Vzk+Jaa6WiZ8+g0TOPnkk9Vuu+0WfujZYob27rvv1oKt94i3JEACJEACJEACJEACJNDnCFBVuM8VafkM3XbbbVZoRWh77rknhdbyWNuGsOuuu+rZVjlmIXUHYOymKUcoqWeeeYZCa1uidEACJEACJEACJEACJNBXCHDGta+UZIX5kDP91GuvvWZDXG211doeDWMd86ISAt99953CETk49gObME0yySQKx0B0+libSjLDQEiABEiABEiABEiABEigJAEKriUB0jsJkAAJkAAJkAAJkAAJkAAJkEC9BKgqXC9fhk4CJEACJEACJEACJEACJEACJFCSAAXXkgDpnQRIgARIgARIgARIgARIgARIoF4CFFzr5cvQSYAESIAESIAESIAESIAESIAEShKg4FoSIL2TAAmQAAmQAAmQAAmQAAmQAAnUS4CCa718GToJkAAJkAAJkAAJkAAJkAAJkEBJAhRcSwKkdxIgARIgARIgARIgARIgARIggXoJUHCtly9DJwESIAESIAESIAESIAESIAESKEmAgmtJgPROAiRAAiRAAiRAAiRAAiRAAiRQLwEKrvXyZegkQAIkQAIkQAIkQAIkQAIkQAIlCVBwLQmQ3kmABEiABEiABEiABEiABEiABOolQMG1Xr4MnQRIgARIgARIgARIgARIgARIoCQBCq4lAdI7CZAACZAACZAACZAACZAACZBAvQQouNbLl6GTAAmQAAmQAAmQAAmQAAmQAAmUJEDBtSRAeicBEiABEiABEiABEiABEiABEqiXAAXXevkydBIgARIgARIgARIgARIgARIggZIEKLiWBEjvJEACJEACJEACJEACJEACJEAC9RKg4FovX4ZOAiRAAiRAAiRAAiRAAiRAAiRQkgAF15IA6Z0ESIAESIAESIAESIAESIAESKBeAhRc6+XL0EmABEiABEiABEiABEiABEiABEoSoOBaEiC9kwAJkAAJkAAJkAAJkAAJkAAJ1EuAgmu9fBk6CZAACZAACZAACZAACZAACZBASQIUXEsCpHcSIAESIAESIAESIAESIAESIIF6CVBwrZcvQycBEiABEiABEiABEiABEiABEihJgIJrSYD0TgIkQAIkQAIkQAIkQAIkQAIkUC8BCq718mXoJEACJEACJEACJEACJEACJEACJQlQcC0JkN5JgARIgARIgARIgARIgARIgATqJUDBtV6+DJ0ESIAESIAESIAESIAESIAESKAkAQquJQHSOwmQAAmQAAmQAAmQAAmQAAmQQL0EKLjWy5ehkwAJkAAJkAAJkAAJkAAJkAAJlCRAwbUkQHonARIgARIgARIgARIgARIgARKolwAF13r5MnQSIAESIAESIAESIAESIAESIIGSBCi4lgRI7yRAAiRAAiRAAiRAAiRAAiRAAvUSoOBaL1+GTgIkQAIkQAIkQAIkQAIkQAIkUJIABdeSAOmdBEiABEiABEiABEiABEiABEigXgIUXOvly9BJgARIgARIgARIgARIgARIgARKEqDgWhIgvZMACZAACZAACZAACZAACZAACdRLgIJrvXwZOgmQAAmQAAmQAAmQAAmQAAmQQEkCFFxLAqR3EiABEiABEiABEiABEiABEiCBeglQcK2XL0MnARIgARIgARIgARIgARIgARIoSYCCa0mA9E4CJEACJEACJEACJEACJEACJFAvAQqu9fJl6CRAAiRAAiRAAiRAAiRAAiRAAiUJUHAtCZDeSYAESIAESIAESIAESIAESIAE6iVAwbVevgydBEiABEiABEiABEiABEiABEigJIHhS/qndxIggYwErrnmGvXLL7/EXE822WRq8cUXj9nxhgRIgARIgARIgARIgARIIE5gmEhM3Ip3TSPw8ccfq6+//jqRrDHHHFNNMskkCft2Fijy33//XTsbfniOXbTjVdXzYYYZJhHU6quvrm688caEPS36BgG+a0r9+uuvasiQIbZAxxlnHDXccMPZe14UJ1D1t6F4Sv7rE98V1Hm0db1Wxr2c9rLlltX/N998owdfRxhhBDXWWGNl9WbdNa2+2oQVvKiqzqB9RDsJM9JII6kxxhijYIrojQT6PgGqCvdAGR9yyCFqpplmSvyttdZahVJ/zDHHKHx48PfWW28VCoOeihP4y1/+ohZZZBH9h3Kl6bsEhtZ3DZ2w4447Tk0zzTRqlFFGUajz5m/AgAF9t8A7nLOqvw1lkz/aaKPp78qmm25aNqiO++/ltHcK1iabbKLf46mmmqpQlE2rr4Uy4XgqU2deeeUVtdJKKykM5I099ti2fdxmm22cGHhJAiTgE+B0m0+kgfeYFR1xxBFtynx1U/sg44UZ2cvovBJnH3zwgTrqqKN0WBC4l1lmmUrC7cVAll9+eXXJJZf0YtKZ5pwEuvGu5UxiLc733HNPdeqpp9YSNgP9k0DV34Y/Qy521cv1vUjazznnHPXSSy+p0UcfXR199NHFoPWgrz/++KNQqptWXwtlwvFUpM7A+/vvv68WWGAB9cMPPzih8ZIESCALAc64ZqHUZTenn366+vnnn+3fdNNN1+UU5Y/+888/V8gH/p5//vn8AdAHCZBATxD45JNP1JlnnqnTOvHEEyvMOj/zzDPq1Vdf1X9TTz11T+SjFxLZF74NvcA5LY233367/qaddtppaU5o7xBgff0vjGOPPdYKreutt566/vrrbft4wgknOMR4SQIk4BPgjKtPZCi433bbbdXSSy+tczr55JMPBTlmFkmgOwSGxnftzTffVL/99psGDpXRffbZpzvwGWvHCTzxxBN6DSTUwnvN9HLae411X0lv0ToDNWEYzED/61//4prWvlIhmI+OEKDg2hHMzYpkwgknVPijIQESqJfA0PiuDR482EJddNFF7TUv+j6B+eabr2cz2ctp71noPZ7wonXGtJGzzz47hdYerwNMfucJ9IzgijWBWEuChez777+/euihh9Stt96qHnjgAfXTTz+pOeaYQ+2444563UArjNgY5IorrlAvvviiwqjXuOOOq+aaay612mqrqRVXXNF6/eKLL7SKGywwO+k+s44CF9iQ5LPPPlMzzDCD2mqrrQIuOm/13XffqZNPPlmF1qX0799fjTfeeG0Tdffdd6uLLrpIDRw4UH344Yd6R8GJJppIzT///Ao7484zzzyJMPbbbz8b56effmqfo9zcezz461//qnbYYQfrhhf/JZC1vhpel19+uVXFXmeddVLfhzPOOEO999572tvWW2+tpp9+ehOEOvfccxXiRfnutttu6rzzzlP33Xefeu6559S0006rw9x+++1bDn5Atf2ggw7SYWItD9Jy//33q7POOku9/vrrWu0dKqP9+vVT2PADG4W5BnX1sssuU48//rh+V/FOzTrrrGruuefW7zk2s2hlitRXN7yi/qt412655RZ155136nyjHcIGR2jfNttsM5W2TADquUbFDEzhB+0c2keo5mMzlcUWW0ztu+++sfXybp6LXrtxIwwzm4BrlPfDDz+MS2v22msvNcEEE9h7c4EyxppBtM2YtR155JF1vrGRGfIe2pXb+MUvuOG7AHPggQfqndOhmoiyxJqy8ccfX9cf1Gm0z2UNVKBRPth86tBDD00NDu8S3ikYfGdQDq557bXX1M0336yefPJJhb0AsKwC5YX6Pu+886qNN95YDTtsM1f1QFUWauC+QdpbbR7o1plO11eT1iJpv/fee/W7acIwdf37778PahZA4wJtZsiUaePKtK9V1Tek/4ILLtDfBtQB1Fm09cgzjnmry5ThVjZNReoM4jT9VxO/6f+88847iXqDth7vPA0JkEAKAdm6vieMdHxxbE8knZlIOmSRfMj1PezMn2xgFF133XWp+ZEOeCS7wFn3xp/53WWXXSL5IGj/sgFSNOqoo2q3a6yxRmqY7gNZaB+J6of2s9FGG7mPKr2WzquOQ4TGTOFK45iaZ+kgtgxDPhLR2muvneof7JBnUQ1MhCPHIbT0Z7jjV2ZmEv77moXJr3yUMmUtT301AcrgTiQdac190kknjaQTbB7Z36uuusqWi3Q0ItR118jGWfq5DGhEW2yxhXVr0o/fKaecMpJOm+stdi3HJlh/sktiJEKovXfDwfXVV18d8ytCRiSDRanuEbeoaMX8mJsy9RVhlPVf5l378ccfI+n0peZbjkiIZGDCZDX2+/LLL1t/IrRFaBt8zrhfeOGFE+UdC6jAjRt3KE7fTgYuErGIwBmhvvpuzb3svhmJYJvw51rsscce1v/bb78dzTnnnPbehIPfWWaZxfVW+HrLLbe04T/11FOp4ey9997W3W233RZzd/bZZ9tnbhrd6+WWW65t3k2geb8Nxl/RX1EFD6Z/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RSaOBEiABEiABEiABEiABEiABEigNgIUXGtDy4BJgARIgARIgARIgARIgARIgASqIEDBtQqKDIMESIAESIAESIAESIAESIAESKA2AtycqTa0DJgESIAEeofA4MGD1cMPP5xI8HLLLaew2RwNCZAACZAACZAACXSTAAXXbtL/X9y//vqrGjJkiL4bffTR1cgjj9w2Vb///ruKokgNM8wwarjhhmvrvkoH3Yy7yny0Cuu3335Tb7/9dtDJNNNMo0YYYYTgM1qSgEsA7yjeF5jhh292c3vXXXeprbfe2k2+vr755pvVqquumrCnBQmQAAmQAAmQAAl0kgBVhTtJOyWuxx57TM9oYFbjkksuSXEVtx5ttNG08LTpppvGH3TgrptxdyB7OorPPvtM4dzV0N8999zTqWQwnh4ncMwxx+j3FAMdb731VqNzM+GEE6pFFllE/0066aSNTisTRwIkQAIkQAIkMPQRaPYUwNBXHplzjFnavOacc85RL730ksKs7tFHH53Xu3VfJG7ruYcuRhxxRJvaX375xV7zggSyEuildwWzqmZm9aqrrlLrr79+1mzSHQmQAAmQAAmQAAnUToAzrrUjbk4Et99+uzr99NPVaaed1pxENTQlE088sfr555/t36WXXtrQlDJZJEACJEACJEACJEACJND3CXDGtUfL+IknnlCYBezGpindjLtHi4vJHkoJbLvttmrppZfWuZ988smHUgrMNgmQAAmQAAmQAAmUJ0DBtTzDroQw33zzdSVeRNrNuLuWaUZMAgUIYN0o/mhIgARIgARIgARIgATKEehJwfWPP/5Ql112mXr66afVK6+8ot577z010UQTqemnn15tsskmaplllkmlcsstt6g777xTvfjii+qLL75Q2CF2jjnmUJtttpmabrrpgv6wYRLWho4zzjhq//33Vw899JC69dZb1QMPPKB++ukn7X/HHXdUCyywQNC/sXzkkUfU1VdfrZ588kntb9FFF1XrrLOOGnbY9hrbUPN95plnTFD2d9ZZZ1VrrbWWvXcv7r33Xp1XYwdWMN9//73aZ599jLX9xezQtNNOa+/NRZG4jV/z2w3uyOfdd9+t7rjjDr1D8AcffKA3ypllllkUuIH9jDPOaJLYyN8BAwaoK664QtdXlN+4446r5pprLrXaaqupFVdcMZHmyy+/XD3//PPaHvlLq5Nn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LrrI7L333k00KLg2IeEFEiABEiABEiCBHhCg4NoD6HxkNQnA8NO6666bOXNQQT7//PMzhy8qIAXXokgyHhIgARIgARIgARIggaIITF9URIyHBOpOAOrfun9sFhawOktHAiRAAiRAAiRAAiRAAiTQTICCazMTXiGBTASwJvTggw9uue9qq4h9Q1Kt/PEeCZAACZAACZAACZAACdSNAFWF61bizC8JtCEwadIkO3M8yyyzmD322KONb94mARIgARIgARIgARIggc4ToODaecZ8AgmQAAmQAAmQAAmQAAmQAAmQQA4CpdvHNUdeGZQESIAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEKLiWsNCYZBIgARIgARIgARIgARIgARKoEwEKrnUqbeaVBEiABEiABEiABEiABEiABEpIgIJrCQuNSSYBEiABEiABEiABEiABEiCBOhGg4Fqn0mZeSYAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEKLiWsNCYZBIgARIgARIgARIgARIgARKoEwEKrnUqbeaVBEiABEiABEiABEiABEiABEpIgIJrCQuNSSYBEiABEiABEiABEiABEiCBOhGg4Fqn0mZeSYAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEKLiWsNCYZBIgARIgARIgARIgARIgARKoEwEKrnUqbeaVBEiABEiABEiABEiABEiABEpIgIJrCQuNSSYBEiABEiABEiABEiABEiCBOhGg4Fqn0mZeSYAESIAESIAESIAESIAESKCEBCi4lrDQmGQSIAESIAESIAESIAESIAESqBMBCq51Km3mlQRIgARIgARIgARIgARIgARKSICCawkLjUkmARIgARIgARIgARIgARIggToRoOBap9JmXkmABEiABEiABEiABEiABEighAQouJaw0JhkEiABEiABEiABEiABEiABEqgTAQqudSpt5pUESIAESIAESIAESIAESIAESkiAgmsJC41JJgESIAESIAESIAESIAESIIE6EaDgWqfSZl5JgARIgARIgARIgARIgARIoIQEpi9hmplkEiglgWuvvdb85z//aUj7YostZoYMGdJwjSckQAIkQAIkQAIkQAIkQAKNBKYJxDVe4lm/EXjrrbfM1KlTm5I155xzmkUWWaTpersLKPIvvvjCept+eo5dtONV1P1pppmmKaott9zS3HTTTU3XeaEaBOr8rqGNQf5R76ebbrrMBfrBBx+Yzz77zIafaaaZzBxzzJE5rroFVHbTTjutmXfeedtmv9f1tag60zajPfTw+eefmxdeeCEyBcsss4yZYYYZIu/xIgn4BOrwrvj5zXLMdy0Ltf4PQ1Xh/i8jM3bsWDNw4MCmv+HDh2dK/UknnWQ/jvhAPv/885niYKDsBL7yla+YddZZx/6hXOmqS6DO79pss81m25ldd901dQE/+eSTZtiwYWaeeeYxc889t8E7g7+RI0emjqvOAbbaaivLbaWVVkqEodf1NU+dSZTBPvD097//velbrt/3O++8sw9SyCSUgUAd3pW85cB3LS/B/gzP6bb+LJeGVGFWdMYZZ3TXwuqm7kbCA529SOi9EG+vv/66OfHEE21cELg32GCDQuItYyQbb7yxueKKK8qYdKY5JYFevGspk9gx71nz/tprr5k111zTfPTRRx1LGyOOJpClzIps27M8Pzon/X21yO95f+eUqesUgbq8K3n58V3LS7D/wnPGtf/KpClFZ599tvn000/d37LLLtvkp98vvPvuuwb5wN9jjz3W78ll+kiABHpE4OSTT3ZC67bbbmtuuOEG89RTT9m/U045pUep4mPjCLBtjyMTfX3hhRd233J816+88spoj7xKAiSQiwDftVz4+jYwZ1z7tmg6l7B99tnHDB061D5g8cUX79yDGDMJ1JxAnd+1hx56yBojg4pvGgc1YThomlx00UVc05oGXk6/va6vWetMzmwzOAmUjgDfldIVGRNcEAEKrgWBLFM0Cy64oMEfHQmQQGcJ1PldW3311TPBffXVV204rMukIaZMCDMH6nV9zVpnMmeYAUmgpAT4rpS04Jjs3ARKI7hiTeATTzxhjXUcddRR5r777jO//vWvzeTJk80nn3xivv71r5sDDjjAro1qRWXKlCnm6quvNn/+858NRvZhaXGVVVYxW2yxhdlkk01c0H/84x8GhirgMDvp33OeIg4mTJhgsCB8+eWXN3vttVeEj+5f+te//mXOOOMM8+WXXzY9fP/99zfzzTdf0/Xwhd/+9rfmsssuMy+99JJ54403zFxzzWUWWmghs8YaaxhYxl1ttdXCQcyRRx7pnvnOO++4+yg3/xw3llpqKbPffvs5Pzz4L4Gk9VV5/fKXv3Sq2N/73vdi34ef//zn5uWXX7bB9t57b7PccstpFOaCCy4weC7K95BDDjEXXnihufvuu82f/vQnM2DAABvnqFGjWg5+QAXumGOOsXFivSLScs8995hzzz3XPPPMM1ZVbumllzbbbbed2WWXXZosaaKuXnXVVeb3v/+9fVfxTq2wwgpm1VVXte85DPa0clnqqx9f1vBFvGu33HKLuf32222+0Q7B0ijat912283ELRN4++23jarRginCoJ1D+wjV/CWXXNJ861vfMkcccUTDenk/z3mPb731VvPoo482RYNya2VITtt2Dahtw1//+ldz+OGH62X7Cw4777xzw7UiT1Dvf/WrXznVZFjuRNu07rrr2vY8bvYY9fP888+3Zfbcc8+ZmWee2ZYZjLCh3KIsiiPdmncYocr6XcNaYLzPeFf+8pe/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sehUZv/+9783fVP0G3PnnXd26rEt4y1zfS9z2lsWSkE3n3jiCfcOn3322alj7cf6miYTCy64oFlnnXXs36KLLpomKP2SAAlUhEC64boSZxojkzPOOKPLQdYNuc8//3yDj8fss89uxo8f7+LjQWsCr7/+ujnxxBOtJwwWbLDBBq0D8C4JFEQAAlwd3ejRo82ZZ55Zx6x3Nc9FfFeKTHCZ63uWtNf1m/zll19mqjb9Vl/TZAKzqjqzes0115jtt98+TXD6JQESqACB2sy4YnTy008/dX/LLrtspuK79dZbDeI666yzMoWva6B3333XcgO7xx57rK4YmG8S6AqBt99+25xzzjn2WQsvvLA56aSTzKOPPmqeeuop+7f00kt3JR1VfwjY+t+VK6+8supZ7rv88ZucvEhYX5Ozok8SIIH+JFCbGdf+xM9UkQAJdJrAQw89ZKBhUSfjHc8995zBejY4qEgffvjhncbM+PuEQJnre5nT3ifFz2SQAAmQQKUJUHCtdPEycyRAAquvvnrtIMD6prp1111XD/lbAwJlru9lTnsNqhazSAIkQAI9J1AqwfXpp582sB738MMPG6yZhPrpkksuaVZYYQXzjW98w+y8885m2mmL1X6+6667zO233+4K6sknn7TH//73vyNnMfbZZx8zYMAA598/wJqUq666yvz+9783f/7znw0MJSDtq666qjnggAMMrATGOaijHXPMMfb2mmuuab73ve+Ze+65x5x77rnmmWeesepqUP/bbrvtzC677OKsWV5xxRV2TS6siB511FHmvvvuM7/+9a/N5MmTzSeffGK+/vWv22cjziiHfP72t781t912m7WeCe6wlDl48GCbdqTja1/7WlRQc+SRRxpdh/POO+84P3i+f44bSy21lNlvv/2cH/8gDzc/nizHWZ79y1/+0qlDg08c25///Ofm5ZdftsmCpcTlllvOHuMa7sFhtgzWcFGO9957r/n444/NGmusYTbddFOz1VZbWT9x/2655RZb3rj/ox/9yMBiJ1S1UZ6vvfaamX/++W3dO+SQQ8zyyy/fFE2WvPuR4DmXXXaZeemll8wbb7xh5pprLrPQQgvZ9G+55ZZmtdVW8703HL/33nt2feYf/vAH87e//c3WVYRFPdlkk03MZpttZuNrCPS/E6gOQi027PCuJTXGBnZ47/Ge/uMf/7AGjvCu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XiUBEiABEiABEiABEqgNgaOPPtp8+OGHZuGFFzaLLLKIWXfddc2yyy5bm/wzoyRQFQLTBOLKmpk//vGPZvPNNzdvvfVWQxZ++9vfmg033LDh2j//+U/z6aef2mvzzTefmWaaaRru86T/CHz++efmhRdeiEzYMsssY2aYYYbIe924iAGSzz77zD5qpplmMnPMMUc3Hlv5Z/RjmX/xxRcGzSTajOmmm65UZVDmtHcDNOrb1KlT7aPmnntuM/306cZy+7G+5uGGeo46A5eWhf9ctI1oI9XNM888pXt3NO3d/vXZzT777GbmmWdum4RevudF1Zm2mczpYemllzYvvfSSi2Xaaac1P/zhD824cePcNR6QAAmUgIA0OqV1MmIGodv+fe1rXwv23XffQBqiQATZpjztuOOOzu/777/fdJ8X+o/AG2+84cpMy1l/f/Ob33Q9wX/5y1+CTTbZJJAObkO6tt9++66npaoP7LcyB2cZmLDljTakbK7Mae8Gaxn8dO/y6aefnvqR/VhfU2fCC3DiiSc6Hs8995x3p/2haD8FJ598ciACQiADPC4etNnPPPNM+wjowxKYPHmyY3fBBRckotLL9zxPnUmUuYI8nXrqqcGhhx4ayGRHIEKrZYx6+uyzzxb0BEZDAiTQDQLphpflC9QvDiPdjzzyiE3O8ssvb5588kmO6PZL4RSYjhlnnNHFBrXwXrnXXnvNrLnmmuajjz7qVRJq89x+KXMFrjPrel6m3yxpP//8880TTzxhMNszfvz4MmU3V1q//PLLTOH7rb5mysT/AmWpL/q80aNHmzPPPFNP+dtFAlnKraj3PMuzu4jGPUqEVnc8YcIEc/jhh1vtggcffNCgD0lHAiRQDgKlNc70t7/9zaggs95661FoLUd9S5VKrEWBerf+XXnllanCF+lZZhKc0LrtttuaG264wTz11FP275RTTinyUbWOq5/KvK4Fceutt5qzzz7bnHXWWXVFkDjfrK//RfX222+bc845x56AyUknnWQeffRR10ZCTZOuvwjU+T0fOnSoK4xXX33VHfOABEig/wmUdsZVhVYgxppVOhLoJAHM6MNh3ddFF13ENa2dhN1ncT/00EN2kOwrX/lKn6WsfXLKnPb2uaOPognss88+Rjv1iy++eOLoRa3YQAsKbtddd7WzWYkD02NuAr18z7PWmdyZzhGB32eUpWM5YmJQEiCBbhMoreDqg8IiezoS6CQBHZVdaaWVKLR2EnQfxr366qv3YaqSJanMaU+WQ/oqksCCCy5o8JfWafuIcLDWStddAr18z7PWme4Sanwa+4yNPHhGAmUiUAnBtQjgUGu65pprbFSwEHvMMcc0RYs1UFdddZX5/e9/b/785z+bv//972aFFVYwq666qjnggAMMrFKG3RlnnGFef/11a5H0uOOOi7UQ+O9//9tat5OFzWbQoEFm9913D0dln3faaac1XEc6Z5llloZrRZz86U9/MldffbWNaosttjDf+ta3YqP9+c9/bl5++WWbjh//+McNFpuRL1h5vu2226yFYLCANeDBgwdbdt/73veMGNaKjbtXN6644gq7zk+fj62W4LDtEtbG+O7rX/+62Xnnnf1L7hh1BGuJUF8wKwELkfC/zjrrmN12262BlQv0vwOoSGs9xPpasLrnnnvMueeea8TYiVWhhgredtttZ3bZZZdCrCxDxe8f//iHLUvU1zg3ZcoUI4ZD7O1w/ShrmWteoUKH9iDs8K4PHz48fNmda52BBdWjjjrK3HfffebXv/61EWMr5pNPPrHljnYCZdkplyXtd911l7n99ttdklS7AOUYruvwhBmWAQMGOP/+AeoF2g3Ud8Qz77zzmlVWWcWgjohhM99r0/Ett9ximeHGj370I7v+DCrLaD+wxnz++ee3be0hhxzStCbt6aefttuiPfzww7a9fffdd82SSy5p25hvfOMb9v1M0llFPFiScO+991qruGussYbZeOONjRhga0pvkReyfFuKeP6//vUvg29U1Pre/fffP1abCarB/hIJrTNIE9qn+++/vyF5Y8aMMQsssEDDtaJOlN0f/vAHW+fwLVpooYXMcsstZ9vFDTbYIPZRqHOo+6ivaPdgrR7tM9rmuK1SinrPf/e735mJEyca1Fm0DxD40cYnqae9fM+z1hm/EHrJ3U8Hj0mABEpIoBsWoDrxjMcff9xZ3oMl4XaulVVh+cgGc845p40P1vluuummpuik4xSICpV7phR1w/FXv/rVQNR1msJJx8/5++Uvf9l0Xy9cdtllzl9cfqQz7fzo89977z2NotBf+fgHsv2Hfd6mm24aGzcsNItxEutPOnlN/mS9U1OaNe34nW222QLpKDaFi7oAfxq201aFpQPhnqXPjPuNsyosgkuw6KKL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HdKq6zSxfhCzxXQkQAIkQAIkQAIkQAKdIQAtJ/QZ1WGQ4MQTT3SadnqdvyRAAv1N4L+6Vf2dxtjUwRAGrLZCRQ1GJDBiCjVfqHb1o0NafRXkAw44oB+TyTSRAAmQAAmQAAmQQGUIYDkBjLYtsMACdkYe2+CEl0FUJrPMCAlUmECpZ1zLUi6YFca2ErCmqw5rb6AurGtc9Dp/SYAESIAESIAESIAESIAESIAEGgmU1jhTYzb6+wzqKb7QirUs2BOTQmt/lxtTRwIkQAIkQAIkQAIkQAIk0B8EOOPahXK45pprjJjAt1Yu11prLWtttwuP5SNIgARIgARIgARIgARIgARIoBIEKLhWohiZCRIgARIgARIgARIgARIgARKoLgGqCle3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BCi4VrdsmTMSIAESIAESIAESIAESIAESqAQBCq6VKEZmggRIgARIgARIgARIgARIgASqS4CCa3XLljkjARIgARIgARIgARIgARIggUoQoOBaiWJkJkiABEiABEiABEiABEiABEigugQouFa3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BCi4VrdsmTMSIAESIAESIAESIAESIAESqAQBCq6VKEZmggRIgARIgARIgARIgARIgASqS4CCa3XLljkjARIgARIgARIgARIgARIggUoQoOBaiWJkJkiABEiABEiABEiABEiABEigugQouFa3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BCi4VrdsmTMSIAESIAESIAESIAESIAESqAQBCq6VKEZmggRIgARIgARIgARIgARIgASqS4CCa3XLljkjARIgARIgARIgARIgARIggUoQoOBaiWJkJkiABEiABEiABEiABEiABEigugQouFa3bJkzEiABEiABEiABEiABEiABEqgEAQqulShGZoIESIAESIAESIAESIAESIAEqkuAgmt1y5Y5IwESIAESIAESIAESIAESIIFKEKDgWoliZCZIgARIgARIgARIgARIgARIoLoEKLhWt2yZMxIgARIgARIgARIgARIgARKoBAEKrpUoRmaCBEiABEiABEiABEiABEiABKpLgIJrdcuWOSMBEiABEiABEiABEiABEiCBShCg4FqJYmQmSIAESIAESIAESIAESIAESKC6BKavbtaqn7NbbrnFfPrpp2allVYyyy67bOIMX3vtteY///lPg//FFlvMDBkypOEaT0iABEiABEiABEiABEigFwReffVVc//99zc9eqONNjJf+cpXmq5HXXj44YfNa6+9ZhZeeGGz9tprR3nhtRIRqIzg+tlnn5kPPvjAop999tnNzDPP3LYYvvjiCxMEgZlmmmnMdNNN19Z/P3m49dZbzRZbbGGTNHny5FSC67bbbtuUlS233JKCaxOV6lxAPUd9h5t++sq89qkKyG8jEHCeeeYp3XufKsNd9PzWW2+ZqVOnNj1xzjnnNIssskjT9U5fKHN9L3PaO12uGv+HH35oB19nmGEGM9dcc+nlxL/9Vl8TJzzGY1F9GfSh0E7CzTTTTGaOOeaIeSIvhwkou2mnndbMO++84dtN571+z4uqM00ZK/jCHXfcYfbee++mWG+++Waz+eabN12PunDvvfeaI444wswyyyzm+eefN5iooSsvgcqoCj/44IN29AUj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ktpIJvle/vKX792fY4WY/b1MrNFOndS7ugS3KcxPU1j6F1uNTGMKJoUpO6zmb+tXl+yXGAdhXwThm0UMxmD/LW3kEtzvu+++vPBBHbEtgqkKf+c730kLWWPqM+NHDJtid4RJEY7fkjteAkcpuB4v7vlSznmgrNrRiGKk6M1vfvPoyKPg6oFsj2nVMIvfX+KzJrgukQ49UwREQAREQAREQARE4GQJ2JakdK54+dRdBFe0FG0rWtJE8cWHMj79Ph4CElyPp6zWUsoMM7NPWKjdZQWOlcPSsZoWrdWW95f4LcF1Cep6pgiIgAiIgAiIgAgsTwDNJ7SeSrfLuBdNQTQj0JY7lIZgmT79PhyB/z1c1Ir50ARQVd3Hxb2o+4RXGBEQAREQAREQAREQARE4JAGOT+RviovHCE2JR2FPB4GjMc50OnApFSIgAiIgAiIgAiIgAiIgAiIgAidNQCuuJ01czxtN4JprrlnZMRzZ8uDogPIoAiIgAiIgAiIgAiIgAiLQFAHtcW2qOJUZERABERABERABERABERABEWiPgFSF2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9AhJc2ytT5UgEREAEREAEREAEREAEREAEmiIgwbWp4lRmREAEREAEREAEREAEREAERKA9Av8Gix1eZbhTbUMAAAAASUVORK5CYII=" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For more reference, visit...\n", + "\n", + "https://www.w3schools.com/python/python_lists_comprehension.asp\n", + "\n", + "https://www.datacamp.com/community/tutorials/python-dictionary-comprehension" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3: Recursion, Lambdas, and Comprehensions Together!\n", + "Sort the family tree as a list of people from youngest to oldest." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Expected Output:\n", + "\n", + "```python\n", + "[{'name': 'Jayden', 'age': 1},\n", + " {'name': 'Penelope', 'age': 24},\n", + " {'name': 'Skyla', 'age': 46},\n", + " {'name': 'Julia', 'age': 66},\n", + " {'name': 'Irine', 'age': 92},\n", + " {'name': 'Dot', 'age': 111}]\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "family_tree = {\n", + " \"name\": \"Jayden\",\n", + " \"age\": 1,\n", + " \"mother\": {\n", + " \"name\": \"Penelope\",\n", + " \"age\": 24,\n", + " \"mother\": {\n", + " \"name\": \"Skyla\",\n", + " \"age\": 46,\n", + " \"mother\": {\n", + " \"name\": \"Julia\",\n", + " \"age\": 66,\n", + " \"mother\": {\n", + " \"name\": \"Irine\",\n", + " \"age\": 92,\n", + " \"mother\": {\n", + " \"name\": \"Dot\",\n", + " \"age\": 111,\n", + " }\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# write your code here" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/s24/AmFam_Ashwin/24_Comprehensions/lec-24-worksheet.docx b/s24/AmFam_Ashwin/24_Comprehensions/lec-24-worksheet.docx new file mode 100644 index 0000000000000000000000000000000000000000..ed874f850af770bb2ae28ab5340006127b48bf7d Binary files /dev/null and b/s24/AmFam_Ashwin/24_Comprehensions/lec-24-worksheet.docx differ diff --git a/s24/AmFam_Ashwin/24_Comprehensions/lec-24-worksheet.pdf b/s24/AmFam_Ashwin/24_Comprehensions/lec-24-worksheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f5afa45c67122ad9984ccf473eea0849e8a5fb09 Binary files /dev/null and b/s24/AmFam_Ashwin/24_Comprehensions/lec-24-worksheet.pdf differ diff --git a/s24/AmFam_Ashwin/25_Error_Handling/Lecture Code/Lec25_Error_Handling_Solution.ipynb b/s24/AmFam_Ashwin/25_Error_Handling/Lecture Code/Lec25_Error_Handling_Solution.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..94058eeb2b4e3adedf5b0784c844ed94e0739cbb --- /dev/null +++ b/s24/AmFam_Ashwin/25_Error_Handling/Lecture Code/Lec25_Error_Handling_Solution.ipynb @@ -0,0 +1,1247 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1: Run this program and think of 2 different kinds of inputs that would crash it.\n", + "\n", + "Name the Runtime errors that occurred here:\n", + "* Entering a slice count of `0`: ZeroDivisionError\n", + "* Entering non-numbers: ValueError\n", + "* Entering only 1 number or no comma: IndexError\n", + "\n", + "Think of inputs that will give Semantic Errors:\n", + "* Entering a negative number" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter pizza diameter(inches), slice count: 10, 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Each pizza slice will be 39.269908169872416 square inches\n" + ] + } + ], + "source": [ + "import math\n", + "\n", + "def pizza_size(radius):\n", + " # What do we assume is true here?\n", + " return (radius ** 2) * math.pi # SemanticError\n", + "\n", + "def slice_size(radius, slice_count):\n", + " # What could go wrong here?\n", + " total_size = pizza_size(radius)\n", + " return total_size * (1 / slice_count) # ZeroDivisionError\n", + "\n", + "# What could go wrong here? \n", + "args = input(\"Enter pizza diameter(inches), slice count: \")\n", + "args = args.split(',')\n", + "radius = float(args[0].strip()) / 2 # ValueError\n", + "slices = int(args[1].strip()) # IndexError, ValueError\n", + "\n", + "size = slice_size(radius, slices)\n", + "print(f'Each pizza slice will be {size} square inches')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lecture 25: Error Handling\n", + "\n", + "**Learing Objectives:**\n", + " \n", + " - Explain the purpose of assert statements, try/except blocks, and raise statements.\n", + "\n", + " - Use an assert statement to force a program to crash, and trace code that uses assert.\n", + "\n", + " - Use try/except blocks to catch runtime errors and deal with them\n", + " - by specifying the exception(s) caught\n", + " - by using the exception object\n", + "\n", + " - Use the raise statement to raise an exception that may be caught in another part of the program\n", + "\n", + " - Hand trace code that uses assert, try/except blocks and raise statements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Being 'Assert'ive\n", + "`assert` makes code 'fail fast' rather than continuing with bad data. This is useful because we would prefer to have runtime errors over semantic (thinking) errors.\n", + "\n", + "An `assert` statement takes a boolean condition, e.g. `assert my_list != []` would assert that the list is not empty.\n", + "\n", + "If the assert statement is True, nothing happens. If the assert statement is False, a runtime error occurs." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter your age: -1\n" + ] + }, + { + "ename": "AssertionError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[2], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m age \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mint\u001b[39m(\u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEnter your age: \u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m age \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIn five years, you will be\u001b[39m\u001b[38;5;124m\"\u001b[39m, age \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m5\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myears old\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mAssertionError\u001b[0m: " + ] + } + ], + "source": [ + "age = int(input(\"Enter your age: \"))\n", + "assert age >= 0\n", + "print(\"In five years, you will be\", age + 5, \"years old\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 1: You try!\n", + "\n", + "* In `pizza_size`, **assert** that the `radius` is positive.\n", + "* In `slice_size`, **assert** that `slice_count` is positive." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter pizza diameter(inches), slice count: 10, 0\n" + ] + }, + { + "ename": "AssertionError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 18\u001b[0m\n\u001b[0;32m 15\u001b[0m radius \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mfloat\u001b[39m(args[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mstrip()) \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m2\u001b[39m\n\u001b[0;32m 16\u001b[0m slices \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mint\u001b[39m(args[\u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mstrip())\n\u001b[1;32m---> 18\u001b[0m size \u001b[38;5;241m=\u001b[39m slice_size(radius, slices)\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEach pizza slice will be \u001b[39m\u001b[38;5;132;01m{\u001b[39;00msize\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m square inches\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "Cell \u001b[1;32mIn[3], line 8\u001b[0m, in \u001b[0;36mslice_size\u001b[1;34m(radius, slice_count)\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mslice_size\u001b[39m(radius, slice_count):\n\u001b[1;32m----> 8\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m slice_count \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m 9\u001b[0m total_size \u001b[38;5;241m=\u001b[39m pizza_size(radius)\n\u001b[0;32m 10\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m total_size \u001b[38;5;241m*\u001b[39m (\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m/\u001b[39m slice_count)\n", + "\u001b[1;31mAssertionError\u001b[0m: " + ] + } + ], + "source": [ + "import math\n", + "\n", + "def pizza_size(radius):\n", + " assert radius > 0\n", + " return (radius ** 2) * math.pi\n", + "\n", + "def slice_size(radius, slice_count):\n", + " assert slice_count >= 1\n", + " total_size = pizza_size(radius)\n", + " return total_size * (1 / slice_count)\n", + "\n", + "args = input(\"Enter pizza diameter(inches), slice count: \")\n", + "args = args.split(',')\n", + "\n", + "radius = float(args[0].strip()) / 2\n", + "slices = int(args[1].strip())\n", + "\n", + "size = slice_size(radius, slices)\n", + "print(f'Each pizza slice will be {size} square inches')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Use `try`/`except` blocks to \"catch\" runtime errors\n", + "`assert` isn't always the prettiest for the user -- their program crashes!\n", + "\n", + "Often, we prefer to use `try` and `except`. `try` and `except` blocks come in pairs. Python tries to run the code in the `try` block, but if there’s an exception, it jumps to the `except` block -- it does not crash! We call this \"catching\" the exception. If there is no exception, the `except` block does not run." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2 inverse is 0.5\n", + "1 inverse is 1.0\n", + "Something bad happened :(\n", + "Just like ifs, we join here!\n" + ] + } + ], + "source": [ + "try: \n", + " print(\"2 inverse is\", 1/2)\n", + " print(\"1 inverse is\", 1/1)\n", + " print(\"0 inverse is\", 1/0) # this line results in a RuntimeError\n", + " print(\"-1 inverse is\", 1/-1)\n", + " print(\"-2 inverse is\", 1/-2)\n", + "except:\n", + " print(\"Something bad happened :(\")\n", + " \n", + "print(\"Just like ifs, we join here!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2: You try!\n", + "\n", + "Catch the error before the program crashes." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter a number of people to divide the pizza among: 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please use a valid number.\n" + ] + } + ], + "source": [ + "pizza_slices = 8\n", + "\n", + "# add a try/except statement to the the code below\n", + "try:\n", + " num_people = int(input(\"Enter a number of people to divide the pizza among: \"))\n", + " assert num_people > 0\n", + " pizza_per_person = pizza_slices / num_people\n", + " print(pizza_per_person, \"slices per person.\")\n", + "except:\n", + " print(\"Please use a valid number.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Being Descriptive\n", + "We can be more descriptive by saying `except Exception as e` and printing out information with `e`" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2 inverse is 0.5\n", + "1 inverse is 1.0\n", + "Something bad happened :(\n", + "<class 'ZeroDivisionError'>\n", + "division by zero\n" + ] + } + ], + "source": [ + "try: \n", + " print(\"2 inverse is\", 1/2)\n", + " print(\"1 inverse is\", 1/1)\n", + " print(\"0 inverse is\", 1/0) # this line results in a RuntimeError\n", + " print(\"-1 inverse is\", 1/-1)\n", + " print(\"-2 inverse is\", 1/-2)\n", + "except Exception as e:\n", + " print(\"Something bad happened :(\")\n", + " print(type(e))\n", + " print(str(e))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3: Add a try/catch block to handle all errors\n", + "\n", + "Be descriptive, print out the error type and message." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter pizza diameter(inches), slice count: 10, 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Each pizza slice will be 39.269908169872416 square inches\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter pizza diameter(inches), slice count: 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Something went wrong!\n", + "<class 'IndexError'>\n", + "list index out of range\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter pizza diameter(inches), slice count: 10, 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Something went wrong!\n", + "<class 'AssertionError'>\n", + "\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[7], line 13\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m total_size \u001b[38;5;241m*\u001b[39m (\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m/\u001b[39m slice_count)\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m(\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[1;32m---> 13\u001b[0m args \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEnter pizza diameter(inches), slice count: \u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 14\u001b[0m args \u001b[38;5;241m=\u001b[39m args\u001b[38;5;241m.\u001b[39msplit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1202\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 1200\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[1;32m-> 1202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_input_request(\n\u001b[0;32m 1203\u001b[0m \u001b[38;5;28mstr\u001b[39m(prompt),\n\u001b[0;32m 1204\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_ident[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 1205\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_parent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1206\u001b[0m password\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 1207\u001b[0m )\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1245\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 1242\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 1243\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[0;32m 1244\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "import math\n", + "\n", + "def pizza_size(radius):\n", + " assert radius > 0\n", + " return (radius ** 2) * math.pi\n", + "\n", + "def slice_size(radius, slice_count):\n", + " assert slice_count >= 1\n", + " total_size = pizza_size(radius)\n", + " return total_size * (1 / slice_count)\n", + "\n", + "while(True):\n", + " args = input(\"Enter pizza diameter(inches), slice count: \")\n", + " args = args.split(',')\n", + " \n", + " try:\n", + " radius = float(args[0].strip()) / 2\n", + " slices = int(args[1].strip())\n", + " size = slice_size(radius, slices)\n", + " print(f'Each pizza slice will be {size} square inches')\n", + " except Exception as e:\n", + " print(\"Something went wrong!\")\n", + " print(type(e))\n", + " print(str(e))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Nested Exceptions\n", + "Exceptions can be thrown from any function. If that function cannot handle the exception, the exception goes to the calling function. If that function cannot handle the exception, to its calling function. If no calling function can handle the exception, the program crashes." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasant shopping experience? y\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cole: Great! :)\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasant shopping experience? n\n" + ] + }, + { + "ename": "AssertionError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[8], line 19\u001b[0m\n\u001b[0;32m 16\u001b[0m matt()\n\u001b[0;32m 17\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n\u001b[1;32m---> 19\u001b[0m pig_wig_corp()\n", + "Cell \u001b[1;32mIn[8], line 16\u001b[0m, in \u001b[0;36mpig_wig_corp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m(\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt the pig wig...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m---> 16\u001b[0m matt()\n\u001b[0;32m 17\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n", + "Cell \u001b[1;32mIn[8], line 11\u001b[0m, in \u001b[0;36mmatt\u001b[1;34m()\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmatt\u001b[39m():\n\u001b[0;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt Matt\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms store...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m---> 11\u001b[0m cole()\n", + "Cell \u001b[1;32mIn[8], line 6\u001b[0m, in \u001b[0;36mcole\u001b[1;34m()\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Hello! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 5\u001b[0m cust_happy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Are you having a pleasant shopping experience?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 6\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m cust_happy\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Great! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mAssertionError\u001b[0m: " + ] + } + ], + "source": [ + "import time\n", + "\n", + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " assert cust_happy.lower() == 'y'\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " matt()\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can choose where to handle an exception, e.g. defer all complaints to corporate." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasant shopping experience? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Corp: We are sorry to hear this.\n", + "Err msg: \n", + "Err type: <class 'AssertionError'>\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[9], line 22\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mErr type:\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mtype\u001b[39m(e))\n\u001b[0;32m 20\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n\u001b[1;32m---> 22\u001b[0m pig_wig_corp()\n", + "Cell \u001b[1;32mIn[9], line 15\u001b[0m, in \u001b[0;36mpig_wig_corp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt the pig wig...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 14\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 15\u001b[0m matt()\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 17\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCorp: We are sorry to hear this.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[9], line 9\u001b[0m, in \u001b[0;36mmatt\u001b[1;34m()\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmatt\u001b[39m():\n\u001b[0;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt Matt\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms store...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 9\u001b[0m cole()\n", + "Cell \u001b[1;32mIn[9], line 3\u001b[0m, in \u001b[0;36mcole\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcole\u001b[39m():\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Hello! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 3\u001b[0m cust_happy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Are you having a pleasant shopping experience?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m cust_happy\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Great! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1202\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 1200\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[1;32m-> 1202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_input_request(\n\u001b[0;32m 1203\u001b[0m \u001b[38;5;28mstr\u001b[39m(prompt),\n\u001b[0;32m 1204\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_ident[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 1205\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_parent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1206\u001b[0m password\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 1207\u001b[0m )\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1245\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 1242\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 1243\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[0;32m 1244\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " assert cust_happy.lower() == 'y'\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e:\n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "... or handle them ourselves ..." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasant shopping experience? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cole: Dang that's rough\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[10], line 24\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mErr type:\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mtype\u001b[39m(e))\n\u001b[0;32m 23\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n\u001b[1;32m---> 24\u001b[0m pig_wig_corp()\n", + "Cell \u001b[1;32mIn[10], line 18\u001b[0m, in \u001b[0;36mpig_wig_corp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt the pig wig...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 17\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 18\u001b[0m matt()\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCorp: We are sorry to hear this.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[10], line 12\u001b[0m, in \u001b[0;36mmatt\u001b[1;34m()\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmatt\u001b[39m():\n\u001b[0;32m 11\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt Matt\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms store...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m---> 12\u001b[0m cole()\n", + "Cell \u001b[1;32mIn[10], line 4\u001b[0m, in \u001b[0;36mcole\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Hello! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 4\u001b[0m cust_happy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Are you having a pleasant shopping experience?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m cust_happy\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Great! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1202\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 1200\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[1;32m-> 1202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_input_request(\n\u001b[0;32m 1203\u001b[0m \u001b[38;5;28mstr\u001b[39m(prompt),\n\u001b[0;32m 1204\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_ident[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 1205\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_parent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1206\u001b[0m password\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 1207\u001b[0m )\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1245\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 1242\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 1243\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[0;32m 1244\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "def cole():\n", + " try:\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " assert cust_happy.lower() == 'y'\n", + " print(\"Cole: Great! :)\")\n", + " except Exception as e:\n", + " print(\"Cole: Dang that's rough\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e:\n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "... or somewhere in between!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### `raise` Our Own Errors\n", + "Rather than using `assert` we can also `raise` an error. As we can see by `type(e)`, there are different types of errors in Python. These form a hierarchy [(see here)](https://docs.python.org/3/library/exceptions.html). It helps to know some common exceptions, but you don't need to memorize them." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasant shopping experience? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Corp: We are sorry to hear this.\n", + "Err msg: This customer may not return in the future!\n", + "Err type: <class 'FutureWarning'>\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[11], line 23\u001b[0m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mErr type:\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mtype\u001b[39m(e))\n\u001b[0;32m 21\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n\u001b[1;32m---> 23\u001b[0m pig_wig_corp()\n", + "Cell \u001b[1;32mIn[11], line 16\u001b[0m, in \u001b[0;36mpig_wig_corp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt the pig wig...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 16\u001b[0m matt()\n\u001b[0;32m 17\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCorp: We are sorry to hear this.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[11], line 10\u001b[0m, in \u001b[0;36mmatt\u001b[1;34m()\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmatt\u001b[39m():\n\u001b[0;32m 9\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt Matt\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms store...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m---> 10\u001b[0m cole()\n", + "Cell \u001b[1;32mIn[11], line 3\u001b[0m, in \u001b[0;36mcole\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcole\u001b[39m():\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Hello! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 3\u001b[0m cust_happy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Are you having a pleasant shopping experience?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cust_happy\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFutureWarning\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThis customer may not return in the future!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1202\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 1200\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[1;32m-> 1202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_input_request(\n\u001b[0;32m 1203\u001b[0m \u001b[38;5;28mstr\u001b[39m(prompt),\n\u001b[0;32m 1204\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_ident[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 1205\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_parent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1206\u001b[0m password\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 1207\u001b[0m )\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1245\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 1242\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 1243\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[0;32m 1244\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e:\n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check if the customer is happy and if they have found everything they needed.\n", + " - If they are not happy, `raise` a `FutureWarning`. Corporate can handle this.\n", + " - If they have not found everything they needed, `raise` a `ResourceWarning`. Matt can handle this." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasant shopping experience? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matt: I'll order some more!\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[12], line 29\u001b[0m\n\u001b[0;32m 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mErr type:\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mtype\u001b[39m(e))\n\u001b[0;32m 27\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n\u001b[1;32m---> 29\u001b[0m pig_wig_corp()\n", + "Cell \u001b[1;32mIn[12], line 22\u001b[0m, in \u001b[0;36mpig_wig_corp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt the pig wig...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 21\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 22\u001b[0m matt()\n\u001b[0;32m 23\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e: \n\u001b[0;32m 24\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCorp: We are sorry to hear this.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[12], line 14\u001b[0m, in \u001b[0;36mmatt\u001b[1;34m()\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt Matt\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms store...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 13\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 14\u001b[0m cole()\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m: \u001b[38;5;66;03m# ALMOST correct....\u001b[39;00m\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMatt: I\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mll order some more!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[12], line 3\u001b[0m, in \u001b[0;36mcole\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcole\u001b[39m():\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Hello! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 3\u001b[0m cust_happy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Are you having a pleasant shopping experience?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cust_happy\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFutureWarning\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThis customer may not return in the future!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1202\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 1200\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[1;32m-> 1202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_input_request(\n\u001b[0;32m 1203\u001b[0m \u001b[38;5;28mstr\u001b[39m(prompt),\n\u001b[0;32m 1204\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_ident[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 1205\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_parent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1206\u001b[0m password\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 1207\u001b[0m )\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1245\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 1242\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 1243\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[0;32m 1244\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " cust_found = input(\"Cole: Did you find everything that you needed?\")\n", + " if cust_found.lower() != 'y':\n", + " raise ResourceWarning(\"We are running out of resources!\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " try:\n", + " cole()\n", + " except Exception: # ALMOST correct....\n", + " print(\"Matt: I'll order some more!\")\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e: \n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What's wrong with the above function? Fix it below." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasent shopping experience? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Corp: We are sorry to hear this.\n", + "Err msg: This customer may not return in the future!\n", + "Err type: <class 'FutureWarning'>\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasent shopping experience? y\n", + "Cole: Did you find everything that you needed? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matt: I'll order some more!\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[13], line 29\u001b[0m\n\u001b[0;32m 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mErr type:\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mtype\u001b[39m(e))\n\u001b[0;32m 27\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n\u001b[1;32m---> 29\u001b[0m pig_wig_corp()\n", + "Cell \u001b[1;32mIn[13], line 22\u001b[0m, in \u001b[0;36mpig_wig_corp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt the pig wig...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 21\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 22\u001b[0m matt()\n\u001b[0;32m 23\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e: \n\u001b[0;32m 24\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCorp: We are sorry to hear this.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[13], line 14\u001b[0m, in \u001b[0;36mmatt\u001b[1;34m()\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt Matt\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms store...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 13\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 14\u001b[0m cole()\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mResourceWarning\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMatt: I\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mll order some more!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[13], line 3\u001b[0m, in \u001b[0;36mcole\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcole\u001b[39m():\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Hello! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 3\u001b[0m cust_happy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Are you having a pleasent shopping experience?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cust_happy\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFutureWarning\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThis customer may not return in the future!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1202\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 1200\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[1;32m-> 1202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_input_request(\n\u001b[0;32m 1203\u001b[0m \u001b[38;5;28mstr\u001b[39m(prompt),\n\u001b[0;32m 1204\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_ident[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 1205\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_parent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1206\u001b[0m password\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 1207\u001b[0m )\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1245\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 1242\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 1243\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[0;32m 1244\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " cust_found = input(\"Cole: Did you find everything that you needed?\")\n", + " if cust_found.lower() != 'y':\n", + " raise ResourceWarning(\"We are running out of resources!\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " try:\n", + " cole()\n", + " except ResourceWarning as e:\n", + " print(\"Matt: I'll order some more!\")\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e: \n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's also ask the customer if they are feeling healthy. If not, we should `raise` a `UserWarning` and Matt should ask them to leave the store." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasent shopping experience? y\n", + "Cole: Did you find everything that you needed? y\n", + "Cole: Are you feeling healthy today? y\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cole: Great! :)\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasent shopping experience? y\n", + "Cole: Did you find everything that you needed? y\n", + "Cole: Are you feeling healthy today? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matt: Please leave the store :(\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasent shopping experience? y\n", + "Cole: Did you find everything that you needed? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Matt: I'll order some more!\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Cole: Are you having a pleasent shopping experience? n\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Corp: We are sorry to hear this.\n", + "Err msg: This customer may not return in the future!\n", + "Err type: <class 'FutureWarning'>\n", + "At the pig wig...\n", + "At Matt's store...\n", + "Cole: Hello! :)\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[14], line 34\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mErr type:\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mtype\u001b[39m(e))\n\u001b[0;32m 32\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m5\u001b[39m)\n\u001b[1;32m---> 34\u001b[0m pig_wig_corp()\n", + "Cell \u001b[1;32mIn[14], line 27\u001b[0m, in \u001b[0;36mpig_wig_corp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 25\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt the pig wig...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 26\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 27\u001b[0m matt()\n\u001b[0;32m 28\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e: \n\u001b[0;32m 29\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCorp: We are sorry to hear this.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[14], line 17\u001b[0m, in \u001b[0;36mmatt\u001b[1;34m()\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAt Matt\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms store...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 17\u001b[0m cole()\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mResourceWarning\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m rw:\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMatt: I\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mll order some more!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[1;32mIn[14], line 3\u001b[0m, in \u001b[0;36mcole\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcole\u001b[39m():\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Hello! :)\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 3\u001b[0m cust_happy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCole: Are you having a pleasent shopping experience?\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cust_happy\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFutureWarning\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThis customer may not return in the future!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1202\u001b[0m, in \u001b[0;36mKernel.raw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 1200\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraw_input was called, but this frontend does not support input requests.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m StdinNotImplementedError(msg)\n\u001b[1;32m-> 1202\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_input_request(\n\u001b[0;32m 1203\u001b[0m \u001b[38;5;28mstr\u001b[39m(prompt),\n\u001b[0;32m 1204\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_ident[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 1205\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_parent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshell\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1206\u001b[0m password\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 1207\u001b[0m )\n", + "File \u001b[1;32m~\\anaconda3\\Lib\\site-packages\\ipykernel\\kernelbase.py:1245\u001b[0m, in \u001b[0;36mKernel._input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 1242\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 1243\u001b[0m \u001b[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001b[39;00m\n\u001b[0;32m 1244\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInterrupted by user\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1245\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m(msg) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog\u001b[38;5;241m.\u001b[39mwarning(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid Message:\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " cust_found = input(\"Cole: Did you find everything that you needed?\")\n", + " if cust_found.lower() != 'y':\n", + " raise ResourceWarning(\"We are running out of resources!\")\n", + " cust_healthy = input(\"Cole: Are you feeling healthy today?\")\n", + " if cust_healthy.lower() != 'y':\n", + " raise UserWarning(\"The customer is feeling sick...\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " try:\n", + " cole()\n", + " except ResourceWarning as rw:\n", + " print(\"Matt: I'll order some more!\")\n", + " except UserWarning as uw:\n", + " print(\"Matt: Please leave the store :(\")\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e: \n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exercise 4: Consider the code below and answer the following questions\n", + "\n", + "1. In your own words, describe what the code does.\n", + "\n", + "**Answer:** There is a random chance each one of our \"flaky\" functions break, and we attempt to catch the exceptions as they happen.\n", + "\n", + "2. In a single iteration, can a `FloatingPointError` and `OverflowError` be thrown?\n", + "\n", + "**Answer:** No, since these are in the same `try`/`except` block, as soon as there is an exception, we will skip to the `except` block. Either one (or neither) may be thrown, but not both.\n", + "\n", + "3. In a single iteration, can a `OSError` follow an `OverflowError`?\n", + "\n", + "**Answer:** Yes. Although we catch the overflow error if it happens, there is a 1% chance an `OSError` follows. They are not in the same `try`/`except` block.\n", + "\n", + "4. Are there any error(s) we are not catching? If so, name them.\n", + "\n", + "**Answer:** We are not catching an `OSError` as it is not inside a `try`/`except`. We are also not catching a `PermissionError` as neither the type nor supertype is in the `except` block.\n", + "\n", + "5. Are there any error(s) we are catching but not raising?\n", + "\n", + "**Answer:** Yes, `FileExistsError` is not raised by anything." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Beginning the flaky functions!\n", + "Phew! I avoided a <class 'OverflowError'>\n", + "End of flaky functions!\n", + "\n", + "Beginning the flaky functions!\n", + "Phew! I avoided a <class 'FloatingPointError'>\n", + "End of flaky functions!\n", + "\n", + "Beginning the flaky functions!\n", + "Phew! I avoided a <class 'FloatingPointError'>\n", + "End of flaky functions!\n", + "\n", + "Beginning the flaky functions!\n", + "Phew! I avoided a <class 'FloatingPointError'>\n" + ] + }, + { + "ename": "PermissionError", + "evalue": "I don't have permission to do that!", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mPermissionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[15], line 37\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 36\u001b[0m flaky_impl_func()\n\u001b[1;32m---> 37\u001b[0m flaky_perm_func()\n\u001b[0;32m 38\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mRuntimeError\u001b[39;00m, \u001b[38;5;167;01mFileExistsError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 39\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPhew! I avoided a\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mtype\u001b[39m(e))\n", + "Cell \u001b[1;32mIn[15], line 22\u001b[0m, in \u001b[0;36mflaky_perm_func\u001b[1;34m()\u001b[0m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mflaky_perm_func\u001b[39m():\n\u001b[0;32m 21\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m(random\u001b[38;5;241m.\u001b[39mrandom() \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m.2\u001b[39m):\n\u001b[1;32m---> 22\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mPermissionError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mI don\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mt have permission to do that!\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mPermissionError\u001b[0m: I don't have permission to do that!" + ] + } + ], + "source": [ + "import random\n", + "import time\n", + "\n", + "def flaky_math_func1():\n", + " if(random.random() < .5):\n", + " raise FloatingPointError(\"Something went wrong doing some float math!\")\n", + " \n", + "def flaky_math_func2():\n", + " if(random.random() < .5):\n", + " raise OverflowError(\"Something went wrong doing some big math!\")\n", + " \n", + "def flaky_os_func():\n", + " if(random.random() < .01):\n", + " raise OSError(\"Something went wrong in the OS!\")\n", + " \n", + "def flaky_impl_func():\n", + " if(random.random() < .05):\n", + " raise NotImplementedError(\"Something went wrong in the implementation!\")\n", + " \n", + "def flaky_perm_func():\n", + " if(random.random() < .2):\n", + " raise PermissionError(\"I don't have permission to do that!\")\n", + " \n", + "while(True):\n", + " print(\"Beginning the flaky functions!\")\n", + " \n", + " try:\n", + " flaky_math_func1()\n", + " flaky_math_func2()\n", + " except ArithmeticError as e:\n", + " print(\"Phew! I avoided a\", type(e))\n", + " \n", + " flaky_os_func()\n", + " \n", + " try:\n", + " flaky_impl_func()\n", + " flaky_perm_func()\n", + " except (RuntimeError, FileExistsError) as e:\n", + " print(\"Phew! I avoided a\", type(e))\n", + " \n", + " print(\"End of flaky functions!\")\n", + " print()\n", + " \n", + " time.sleep(10) # wait 10 seconds, give time to read the output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### A Word on Hierarchy\n", + "All dogs are animals, but not all animals are dogs.\n", + "\n", + "All ZeroDivisionErrors are ArithmeticErrors, but not all ArithmeticErrors are ZeroDivisionErrors." + ] + }, + { + "attachments": { + "1_iP78XqAbkntOuzbHCoiubg.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABLgAAANACAIAAACnoUP7AACAAElEQVR42uzdb2xcZZ4nevfellYKonBLZF8QalJ+R+JI4wgCmNUm9jAQZ97cuHGc1WpCTE8iWLHTbTtvmG6Ysqd76H5ju+jpnqZvAhjYfxiDM28ak17GTpBiaMLGe4UTrnSlVNpJ7tUGaYxRIo3uTHPVOd21h3NOlcvlsl22Px/xwlWUT6qO6zznfM/ze57n619++WUdAAAA/N6/sAsAAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAAAAQREAAABBEQAAAEERAAAAQREAAABBEQAAAEERAAAAQREAAABBEQAAAEERAAAAQREAAABBEQAAgNrzdbsAWIr/fPG/2gkAJfy7bf/WTgDWHD2KAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAADAevR1uwDYgK5fvR555rbUbZtu31T+Fm5+cfPG/I2KNxJ/A3V1dZu3bK74X0ncYGUfbcENxt9nBftqsRspc4+tjMufXs5fzH927fpnt97VnVs2b7p90+Yt/2rrPVvLfEtL/P6s/P4vc1dsuvURtt6TKX9XFHvPF3514frV//nZtc9u3nrzwU7eek9m+/3btWAAgiJA9Z0ZO/3z770YebLt8X2Hnnm8/I289sNX3z95JvLktl3bn331uXJ+/Qdd3/8slnxyv/xx5Nr63Hsf/fy70be67f7tzw5H/5Wff/dnFz+6mPhv3fvwfb1/c2xRu+jcex8N/flgsf8bf5+lvfjdn3383rnIk88OP7dtMVf83Y98O/7kf7rwX1bym3Pzi5vvvPqL8dffufnFzWKv2bZr2+79e3a376ng+/Pk80/t3r+n6m878d869MzjbY/vq3ibF3514f2Tp8+9d67Erth6z9a2Q/sW3BWRPXx6bPLj984V+zL/Novevuneh+/bvX+PxAiwrJSeAhsvKJ48nZQez5S45C3TxY8unBk7XWuf9+KvLi72o52L5bqKXb96/eOkrb3z+jtr62vz1k9Gv/PHf/72375Vemde/Ojiz7/34nf++Nu18024+KuLVfwTX796/QeH/+qvu75/5uQCh8zlTy8vale889ovvvPHf/4ff/R6iZQYhMn3T575667vv/jdn5Xo9wZAUARY3GVu4mXozS9unHvvo6Vv//Ufvb70wFldi/1oN+dvfFy9oHjxVxeqFV9X8Tvzg8N/tWBEDPvs2vWff+/Ft34yuupv/sKvLnx27XriTY1if5oSzoyd/u43nykd5BJ3xes/fK109nvxL372Hxd57Lx/8swPDn//8qeXNWsAgiLAUpWITGfGzlQlldVCPFjKRytdT7hY40V6Dm9+caMGe1+LpMTvLyoaFbz9t2+t+pchsf/8d3/ovz+32Mz58++9WNl3Y/z1d0pkxRf/4mfv/10lR99n167LigCCIkA1cstr48X+18WPLlQlII2//k4FfTXLalEfbbH5oYTLn+ZLXMRXscB1+bz+w9cSe+TKz4rjr72ziik3PjqxstsH169ejw+XXexxkVyE/NovPl7CV+7mFzcG/8PAWumdBlhDTGYDbCDFyvDC16yPPd2x9H/orZ++9WyNzbRxZux0OZOXFBtSWJl3Smakix9duPzp5a33bK3ZL8yZsdOJGWbT7Zt2t+/Zes/W4M3f/OJm/mL+47//OPEGwVs/fWt3+57lmM504RsEJW9Y3PzixsVfXShzSqGP3zuXeOxs3rJ576G2XX+86867Nge74vKn+TNjZxJ7Ml/87osv/LcfR3ZFsXs32+7f/tjTj23esjnYcnDT4e2fvhUfl/jZtevVOnIBKNCj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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[Source](https://levelup.gitconnected.com/java-classes-and-objects-a312db4bc785) (yes this is a Java resource -- but applicable to MANY programming languages!)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/s24/AmFam_Ashwin/25_Error_Handling/Lecture Code/Lec25_Error_Handling_Template.ipynb b/s24/AmFam_Ashwin/25_Error_Handling/Lecture Code/Lec25_Error_Handling_Template.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..7011eec1d6ac711939415e8d107d298a63effa9c --- /dev/null +++ b/s24/AmFam_Ashwin/25_Error_Handling/Lecture Code/Lec25_Error_Handling_Template.ipynb @@ -0,0 +1,655 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Warmup 1: Run this program and think of 2 different kinds of inputs that would crash it.\n", + "\n", + "Name the Runtime errors that occurred here:\n", + "\n", + "Think of inputs that will give Semantic Errors:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "def pizza_size(radius):\n", + " # What do we assume is true here?\n", + " return (radius ** 2) * math.pi\n", + "\n", + "def slice_size(radius, slice_count):\n", + " # What could go wrong here?\n", + " total_size = pizza_size(radius)\n", + " return total_size * (1 / slice_count)\n", + "\n", + "# What could go wrong here? \n", + "args = input(\"Enter pizza diameter(inches), slice count: \")\n", + "args = args.split(',')\n", + "radius = float(args[0].strip()) / 2\n", + "slices = int(args[1].strip())\n", + "\n", + "size = slice_size(radius, slices)\n", + "print(f'Each pizza slice will be {size} square inches')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lecture 25: Error Handling\n", + "\n", + "**Learing Objectives:**\n", + " \n", + " - Explain the purpose of assert statements, try/except blocks, and raise statements.\n", + "\n", + " - Use an assert statement to force a program to crash, and trace code that uses assert.\n", + "\n", + " - Use try/except blocks to catch runtime errors and deal with them\n", + " - by specifying the exception(s) caught\n", + " - by using the exception object\n", + "\n", + " - Use the raise statement to raise an exception that may be caught in another part of the program\n", + "\n", + " - Hand trace code that uses assert, try/except blocks and raise statements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Being 'Assert'ive\n", + "`assert` makes code 'fail fast' rather than continuing with bad data. This is useful because we would prefer to have runtime errors over semantic (thinking) errors.\n", + "\n", + "An `assert` statement takes a boolean condition, e.g. `assert my_list != []` would assert that the list is not empty.\n", + "\n", + "If the assert statement is True, nothing happens. If the assert statement is False, a runtime error occurs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "age = int(input(\"Enter your age: \"))\n", + "assert age >= 0\n", + "print(\"In five years, you will be\", age + 5, \"years old\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 1: You try!\n", + "\n", + "* In `pizza_size`, **assert** that the `radius` is positive.\n", + "* In `slice_size`, **assert** that `slice_count` is positive." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "def pizza_size(radius):\n", + " return (radius ** 2) * math.pi\n", + "\n", + "def slice_size(radius, slice_count):\n", + " total_size = pizza_size(radius)\n", + " return total_size * (1 / slice_count)\n", + "\n", + "args = input(\"Enter pizza diameter(inches), slice count: \")\n", + "args = args.split(',')\n", + "\n", + "radius = float(args[0].strip()) / 2\n", + "slices = int(args[1].strip())\n", + "\n", + "size = slice_size(radius, slices)\n", + "print(f'Each pizza slice will be {size} square inches')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Use `try`/`except` blocks to \"catch\" runtime errors\n", + "`assert` isn't always the prettiest for the user -- their program crashes!\n", + "\n", + "Often, we prefer to use `try` and `except`. `try` and `except` blocks come in pairs. Python tries to run the code in the `try` block, but if there’s an exception, it jumps to the `except` block -- it does not crash! We call this \"catching\" the exception. If there is no exception, the `except` block does not run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try: \n", + " print(\"2 inverse is\", 1/2)\n", + " print(\"1 inverse is\", 1/1)\n", + " print(\"0 inverse is\", 1/0) # this line results in a RuntimeError\n", + " print(\"-1 inverse is\", 1/-1)\n", + " print(\"-2 inverse is\", 1/-2)\n", + "except:\n", + " print(\"Something bad happened :(\")\n", + " \n", + "print(\"Just like ifs, we join here!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2: You try!\n", + "\n", + "Catch the error before the program crashes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pizza_slices = 8\n", + "\n", + "# add a try/except statement to the the code below\n", + "num_people = int(input(\"Enter a number of people to divide the pizza among: \"))\n", + "assert num_people > 0\n", + "pizza_per_person = pizza_slices / num_people\n", + "print(pizza_per_person, \"slices per person.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Being Descriptive\n", + "We can be more descriptive by saying `except Exception as e` and printing out information with `e`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try: \n", + " print(\"2 inverse is\", 1/2)\n", + " print(\"1 inverse is\", 1/1)\n", + " print(\"0 inverse is\", 1/0) # this line results in a RuntimeError\n", + " print(\"-1 inverse is\", 1/-1)\n", + " print(\"-2 inverse is\", 1/-2)\n", + "except Exception as e:\n", + " print(\"Something bad happened :(\")\n", + " print(type(e))\n", + " print(str(e))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3: Add a try/catch block to handle all errors\n", + "\n", + "Be descriptive, print out the error type and message." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "def pizza_size(radius):\n", + " assert radius > 0\n", + " return (radius ** 2) * math.pi\n", + "\n", + "def slice_size(radius, slice_count):\n", + " assert slice_count >= 1\n", + " total_size = pizza_size(radius)\n", + " return total_size * (1 / slice_count)\n", + "\n", + "while(True):\n", + " args = input(\"Enter pizza diameter(inches), slice count: \")\n", + " args = args.split(',')\n", + " \n", + " try:\n", + " radius = float(args[0].strip()) / 2\n", + " slices = int(args[1].strip())\n", + " size = slice_size(radius, slices)\n", + " print(f'Each pizza slice will be {size} square inches')\n", + " except Exception as e:\n", + " print(\"Something went wrong!\")\n", + " print(type(e))\n", + " print(str(e))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Nested Exceptions\n", + "Exceptions can be thrown from any function. If that function cannot handle the exception, the exception goes to the calling function. If that function cannot handle the exception, to its calling function. If no calling function can handle the exception, the program crashes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "\n", + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " assert cust_happy.lower() == 'y'\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " matt()\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can choose where to handle an exception, e.g. defer all complaints to corporate." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " assert cust_happy.lower() == 'y'\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e:\n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "... or handle them ourselves ..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cole():\n", + " try:\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " assert cust_happy.lower() == 'y'\n", + " print(\"Cole: Great! :)\")\n", + " except Exception as e:\n", + " print(\"Cole: Dang that's rough\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e:\n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "... or somewhere in between!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### `raise` Our Own Errors\n", + "Rather than using `assert` we can also `raise` an error. As we can see by `type(e)`, there are different types of errors in Python. These form a hierarchy [(see here)](https://docs.python.org/3/library/exceptions.html). It helps to know some common exceptions, but you don't need to memorize them." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " cole()\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e:\n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check if the customer is happy and if they have found everything they needed.\n", + " - If they are not happy, `raise` a `FutureWarning`. Corporate can handle this.\n", + " - If they have not found everything they needed, `raise` a `ResourceWarning`. Matt can handle this." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " cust_found = input(\"Cole: Did you find everything that you needed?\")\n", + " if cust_found.lower() != 'y':\n", + " raise ResourceWarning(\"We are running out of resources!\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " try:\n", + " cole()\n", + " except Exception: # ALMOST correct....\n", + " print(\"Matt: I'll order some more!\")\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e: \n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What's wrong with the above function? Fix it below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " cust_found = input(\"Cole: Did you find everything that you needed?\")\n", + " if cust_found.lower() != 'y':\n", + " raise ResourceWarning(\"We are running out of resources!\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " try:\n", + " cole()\n", + " except ResourceWarning as e:\n", + " print(\"Matt: I'll order some more!\")\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e: \n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's also ask the customer if they are feeling healthy. If not, we should `raise` a `UserWarning` and Matt should ask them to leave the store." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def cole():\n", + " print(\"Cole: Hello! :)\")\n", + " cust_happy = input(\"Cole: Are you having a pleasant shopping experience?\")\n", + " if cust_happy.lower() != 'y':\n", + " raise FutureWarning(\"This customer may not return in the future!\")\n", + " cust_found = input(\"Cole: Did you find everything that you needed?\")\n", + " if cust_found.lower() != 'y':\n", + " raise ResourceWarning(\"We are running out of resources!\")\n", + " cust_healthy = input(\"Cole: Are you feeling healthy today?\")\n", + " if cust_healthy.lower() != 'y':\n", + " raise UserWarning(\"The customer is feeling sick...\")\n", + " print(\"Cole: Great! :)\")\n", + " \n", + "def matt():\n", + " print(\"At Matt's store...\")\n", + " try:\n", + " cole()\n", + " except ResourceWarning as rw:\n", + " print(\"Matt: I'll order some more!\")\n", + " except UserWarning as uw:\n", + " print(\"Matt: Please leave the store :(\")\n", + " \n", + "def pig_wig_corp():\n", + " while(True):\n", + " print(\"At the pig wig...\")\n", + " try:\n", + " matt()\n", + " except Exception as e: \n", + " print(\"Corp: We are sorry to hear this.\")\n", + " print(\"Err msg:\", str(e))\n", + " print(\"Err type:\", type(e))\n", + " time.sleep(5)\n", + " \n", + "pig_wig_corp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exercise 4: Consider the code below and answer the following questions\n", + "\n", + "1. In your own words, describe what the code does.\n", + "\n", + "2. In a single iteration, can a `FloatingPointError` and `OverflowError` be thrown?\n", + "\n", + "3. In a single iteration, can a `OSError` follow an `OverflowError`?\n", + "\n", + "4. Are there any error(s) we are not catching? If so, name them.\n", + "\n", + "5. Are there any error(s) we are catching but not raising?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "import time\n", + "\n", + "def flaky_math_func1():\n", + " if(random.random() < .5):\n", + " raise FloatingPointError(\"Something went wrong doing some float math!\")\n", + " \n", + "def flaky_math_func2():\n", + " if(random.random() < .5):\n", + " raise OverflowError(\"Something went wrong doing some big math!\")\n", + " \n", + "def flaky_os_func():\n", + " if(random.random() < .01):\n", + " raise OSError(\"Something went wrong in the OS!\")\n", + " \n", + "def flaky_impl_func():\n", + " if(random.random() < .05):\n", + " raise NotImplementedError(\"Something went wrong in the implementation!\")\n", + " \n", + "def flaky_perm_func():\n", + " if(random.random() < .2):\n", + " raise PermissionError(\"I don't have permission to do that!\")\n", + " \n", + "while(True):\n", + " print(\"Beginning the flaky functions!\")\n", + " \n", + " try:\n", + " flaky_math_func1()\n", + " flaky_math_func2()\n", + " except ArithmeticError as e:\n", + " print(\"Phew! I avoided a\", type(e))\n", + " \n", + " flaky_os_func()\n", + " \n", + " try:\n", + " flaky_impl_func()\n", + " flaky_perm_func()\n", + " except (RuntimeError, FileExistsError) as e:\n", + " print(\"Phew! I avoided a\", type(e))\n", + " \n", + " print(\"End of flaky functions!\")\n", + " print()\n", + " \n", + " time.sleep(10) # wait 10 seconds, give time to read the output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### A Word on Hierarchy\n", + "All dogs are animals, but not all animals are dogs.\n", + "\n", + "All ZeroDivisionErrors are ArithmeticErrors, but not all ArithmeticErrors are ZeroDivisionErrors." + ] + }, + { + "attachments": { + "1_iP78XqAbkntOuzbHCoiubg.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABLgAAANACAIAAACnoUP7AACAAElEQVR42uzdb2xcZZ4nevfellYKonBLZF8QalJ+R+JI4wgCmNUm9jAQZ97cuHGc1WpCTE8iWLHTbTtvmG6Ysqd76H5ju+jpnqZvAhjYfxiDM28ak17GTpBiaMLGe4UTrnSlVNpJ7tUGaYxRIo3uTHPVOd21h3NOlcvlsl22Px/xwlWUT6qO6zznfM/ze57n619++WUdAAAA/N6/sAsAAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAABAUAQAAEBQBAAAQFAEAAAAQREAAABBEQAAAEERAAAAQREAAABBEQAAAEERAAAAQREAAABBEQAAAEERAAAAQREAAABBEQAAgNrzdbsAWIr/fPG/2gkAJfy7bf/WTgDWHD2KAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAIigAAAAiKAAAACIoAAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAACAoAgAAICgCAAAgKAIAADAevR1uwDYgK5fvR555rbUbZtu31T+Fm5+cfPG/I2KNxJ/A3V1dZu3bK74X0ncYGUfbcENxt9nBftqsRspc4+tjMufXs5fzH927fpnt97VnVs2b7p90+Yt/2rrPVvLfEtL/P6s/P4vc1dsuvURtt6TKX9XFHvPF3514frV//nZtc9u3nrzwU7eek9m+/3btWAAgiJA9Z0ZO/3z770YebLt8X2Hnnm8/I289sNX3z95JvLktl3bn331uXJ+/Qdd3/8slnxyv/xx5Nr63Hsf/fy70be67f7tzw5H/5Wff/dnFz+6mPhv3fvwfb1/c2xRu+jcex8N/flgsf8bf5+lvfjdn3383rnIk88OP7dtMVf83Y98O/7kf7rwX1bym3Pzi5vvvPqL8dffufnFzWKv2bZr2+79e3a376ng+/Pk80/t3r+n6m878d869MzjbY/vq3ibF3514f2Tp8+9d67Erth6z9a2Q/sW3BWRPXx6bPLj984V+zL/Novevuneh+/bvX+PxAiwrJSeAhsvKJ48nZQez5S45C3TxY8unBk7XWuf9+KvLi72o52L5bqKXb96/eOkrb3z+jtr62vz1k9Gv/PHf/72375Vemde/Ojiz7/34nf++Nu18024+KuLVfwTX796/QeH/+qvu75/5uQCh8zlTy8vale889ovvvPHf/4ff/R6iZQYhMn3T575667vv/jdn5Xo9wZAUARY3GVu4mXozS9unHvvo6Vv//Ufvb70wFldi/1oN+dvfFy9oHjxVxeqFV9X8Tvzg8N/tWBEDPvs2vWff+/Ft34yuupv/sKvLnx27XriTY1if5oSzoyd/u43nykd5BJ3xes/fK109nvxL372Hxd57Lx/8swPDn//8qeXNWsAgiLAUpWITGfGzlQlldVCPFjKRytdT7hY40V6Dm9+caMGe1+LpMTvLyoaFbz9t2+t+pchsf/8d3/ovz+32Mz58++9WNl3Y/z1d0pkxRf/4mfv/10lR99n167LigCCIkA1cstr48X+18WPLlQlII2//k4FfTXLalEfbbH5oYTLn+ZLXMRXscB1+bz+w9cSe+TKz4rjr72ziik3PjqxstsH169ejw+XXexxkVyE/NovPl7CV+7mFzcG/8PAWumdBlhDTGYDbCDFyvDC16yPPd2x9H/orZ++9WyNzbRxZux0OZOXFBtSWJl3Smakix9duPzp5a33bK3ZL8yZsdOJGWbT7Zt2t+/Zes/W4M3f/OJm/mL+47//OPEGwVs/fWt3+57lmM504RsEJW9Y3PzixsVfXShzSqGP3zuXeOxs3rJ576G2XX+86867Nge74vKn+TNjZxJ7Ml/87osv/LcfR3ZFsXs32+7f/tjTj23esjnYcnDT4e2fvhUfl/jZtevVOnIBKNCj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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[Source](https://levelup.gitconnected.com/java-classes-and-objects-a312db4bc785) (yes this is a Java resource -- but applicable to MANY programming languages!)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/s24/AmFam_Ashwin/25_Error_Handling/lec-25-worksheet.docx b/s24/AmFam_Ashwin/25_Error_Handling/lec-25-worksheet.docx new file mode 100644 index 0000000000000000000000000000000000000000..b30ba12f12d5f6b723f087ebc76d495872f411fe Binary files /dev/null and b/s24/AmFam_Ashwin/25_Error_Handling/lec-25-worksheet.docx differ diff --git a/s24/AmFam_Ashwin/25_Error_Handling/lec-25-worksheet.pdf b/s24/AmFam_Ashwin/25_Error_Handling/lec-25-worksheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f761e34a0a0a8a9833c937fc2bc00f3b79633bb2 Binary files /dev/null and b/s24/AmFam_Ashwin/25_Error_Handling/lec-25-worksheet.pdf differ