{ "cells": [ { "cell_type": "markdown", "id": "b3105bfd", "metadata": {}, "source": [ "# Solution to Exercises " ] }, { "cell_type": "markdown", "id": "0d326af5", "metadata": {}, "source": [ "## Beginning Python Programming" ] }, { "cell_type": "markdown", "id": "b78638cf", "metadata": {}, "source": [ "**pandas**" ] }, { "cell_type": "code", "execution_count": 4, "id": "20c7f0b2", "metadata": {}, "outputs": [], "source": [ "# 1) Create your own data file with some interesting info. \n", "# Read in the data into a dataframe called df using pd.read_excel().\n", "import pandas as pd\n", "df=pd.read_excel(\"sugar.xlsx\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "ac4f8238", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FoodGrams of SugarRecommended Daily Limit (25 grams)
0BK Chocolate Shake1124x daily limit
\n", "
" ], "text/plain": [ " Food Grams of Sugar Recommended Daily Limit (25 grams)\n", "0 BK Chocolate Shake 112 4x daily limit" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 2) Display the first row of df\n", "df.head(1)" ] }, { "cell_type": "code", "execution_count": 7, "id": "252806ed", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
foodsugar(gm)daily limit
0BK Chocolate Shake1124x daily limit
\n", "
" ], "text/plain": [ " food sugar(gm) daily limit\n", "0 BK Chocolate Shake 112 4x daily limit" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 3) Abbreviate the column names.\n", "df.columns=[\"food\", \"sugar(gm)\",\"daily limit\"]\n", "# 4) Display the first line\n", "df.head(1)" ] }, { "cell_type": "code", "execution_count": 8, "id": "8e6c7682", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "112" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 5) Show how to use .loc() to get a particular entry in your dataframe.\n", "df.loc[0,\"sugar(gm)\"]" ] }, { "cell_type": "markdown", "id": "7371131f", "metadata": {}, "source": [ "**for loops**" ] }, { "cell_type": "code", "execution_count": 9, "id": "b804c230", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "list 1= [ 0 2 4 6 8 10]\n", "1\n", "3\n", "5\n", "7\n", "9\n", "11\n", "Mission Accomplished!\n" ] } ], "source": [ "import numpy as np\n", "list1=np.arange(0,12,2)\n", "print(\"list 1=\", list1)\n", "def addone(list1):\n", " for i in list1:\n", " print(i+1)\n", " return print(\"Mission Accomplished!\")\n", "\n", "addone(list1)" ] }, { "cell_type": "markdown", "id": "20d3b621", "metadata": {}, "source": [ "**If conditional statements**" ] }, { "cell_type": "code", "execution_count": 11, "id": "afbcadfe", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "list2= [ 0 2 4 6 8 10 12 14 16 18 20]\n", "6.0\n", "7.0\n", "8.0\n", "9.0\n", "10.0\n" ] } ], "source": [ "list2=np.arange(0,22,2)\n", "print(\"list2=\",list2)\n", "\n", "def halve_upper_half(list2):\n", " for i in list2:\n", " if i>10:\n", " print(i/2)\n", " return\n", "\n", "halve_upper_half(list2)" ] }, { "cell_type": "markdown", "id": "3c2b0112", "metadata": {}, "source": [ "**Dataframes**" ] }, { "cell_type": "code", "execution_count": 16, "id": "60356a0d", "metadata": { "tags": [ "hide-input" ] }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "rawCOVID = pd.read_json('https://data.cityofchicago.org/resource/yhhz-zm2v.json?$limit=100000') #Import data directly from data portal\n", "COVID=rawCOVID[['deaths_cumulative', \"population\", 'tests_cumulative','zip_code']]\n", "COVID.dropna #drop rows with missing data\n", "COVID.columns=[\"deaths\",\"population\",\"tests\",\"zip\"] #simplify the column names" ] }, { "cell_type": "code", "execution_count": 17, "id": "1820c7f2", "metadata": { "tags": [ "hide-input" ] }, "outputs": [], "source": [ "def MyCOVID2(COVID,zipcode):\n", " alreadychecked=0 #eliminate duplication of information\n", " for z in COVID.index: #go through all the index values\n", " if COVID.loc[z,\"zip\"]==zipcode and alreadychecked==0: #found the zip we requested (first-time)\n", " alreadychecked=1 #we will only do this once\n", " df=COVID[COVID[\"zip\"]==zipcode]\n", " numtested=df[\"tests\"].max()\n", " numdeaths=df[\"deaths\"].max()\n", " numpopulation=df[\"population\"].max()\n", " print(\"Zip code: \", COVID.loc[z,\"zip\"])\n", " print(\"population is \", numpopulation)\n", " print(\"number tested is \", numtested)\n", " print(\"number deaths \", numdeaths)\n", " print(\"population is \", numpopulation)\n", " return (\"Enter a different zip code if you wish.\")" ] }, { "cell_type": "code", "execution_count": 18, "id": "c8d7fd25", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Zip code: 60637\n", "population is 47454\n", "number tested is 416617\n", "number deaths 107\n", "population is 47454\n" ] }, { "data": { "text/plain": [ "'Enter a different zip code if you wish.'" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "MyCOVID2(COVID,'60637')" ] }, { "cell_type": "markdown", "id": "0f02d667", "metadata": {}, "source": [ "## Glimpse of Chicago" ] }, { "cell_type": "markdown", "id": "2507239f", "metadata": {}, "source": [ "**Predicting Exemplary Schools**" ] }, { "cell_type": "code", "execution_count": 50, "id": "dcd67135", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|TP|= 4\n", "|TN|= 113\n", "|FP|= 3\n", "|FN|= 2\n", "Accuracy (% correct all 122 schools)= 96.0 %\n", "Precision (% correct of those you predicted to be exemplary) = 56.99999999999999 %\n", "Recall (% correct of schools that are exemplary) = 67.0 %\n", "COMPETITION F1 SCORE= 61.6 %\n" ] } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "df=pd.read_excel(\"MiddleSchool.xlsx\")\n", "\n", "#---PREDICTION MODEL----#\n", "def mypredict(df):\n", " for i in df.index:\n", " if (df.loc[i,\"Teacher Retention Rate\"]>=85 and df.loc[i,\"Student Attendance Rate\"]>=95 and df.loc[i,\"# Student Enrollment\"]<=267 and df.loc[i,\"Student Chronic Truancy Rate\"]<=2.9 and df.loc[i,\"Teacher Retention Rate\"]>=90.6) : \n", " df.loc[i,\"Prediction\"]=1 \n", " else:\n", " df.loc[i,\"Prediction\"]=0\n", " return df\n", "\n", "#---APPLY MODEL TO OUR DATA---#\n", "mydf=mypredict(df)\n", "mydf=mydf.reset_index(drop=True)\n", "\n", "#---COMPUTE YOUR SCORE---#\n", "TP=0\n", "TN=0\n", "FP=0\n", "FN=0\n", "numschools=0\n", "for i in mydf.index:\n", " if mydf.loc[i,\"Prediction\"]==1 and mydf.loc[i,\"Summative Designation\"]==\"Exemplary\":\n", " TP=TP+1\n", " if mydf.loc[i,\"Prediction\"]==0 and mydf.loc[i,\"Summative Designation\"]!=\"Exemplary\":\n", " TN=TN+1\n", " if mydf.loc[i,\"Prediction\"]==1 and mydf.loc[i,\"Summative Designation\"]!=\"Exemplary\":\n", " FP=FP+1\n", " if mydf.loc[i,\"Prediction\"]==0 and mydf.loc[i,\"Summative Designation\"]==\"Exemplary\":\n", " FN=FN+1\n", " numschools=numschools+1\n", "print(\"|TP|=\",TP)\n", "print(\"|TN|=\",TN)\n", "print(\"|FP|=\",FP)\n", "print(\"|FN|=\",FN)\n", "accuracy=round((TP+TN)/numschools,2)\n", "precision=round(TP/(TP+FP),2)\n", "recall=round(TP/(TP+FN),2)\n", "F1score=2*(precision*recall)/(precision+recall)\n", "print(\"Accuracy (% correct all 122 schools)=\",100*accuracy,\"%\")\n", "print(\"Precision (% correct of those you predicted to be exemplary) =\",100*precision,\"%\")\n", "print(\"Recall (% correct of schools that are exemplary) =\",100*recall,\"%\")\n", "print('COMPETITION F1 SCORE=',round(F1score*100,2),\"%\" )" ] }, { "cell_type": "markdown", "id": "71b5636d", "metadata": {}, "source": [ "## Arts in STEM(STEAM)" ] }, { "cell_type": "markdown", "id": "a4c4ae8d", "metadata": {}, "source": [ "**Pixel Images**\n", "\n", "1a) By increasing the number of pixels, we can get a better reproduction of the original.\n", "Create a 16x16 pixel image. " ] }, { "cell_type": "code", "execution_count": 6, "id": "6ef063ad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaEAAAGdCAYAAAC7EMwUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAfTUlEQVR4nO3de3BU9f3/8deSJRvAEJo4SVhMILSMKCAiqBUQw6h0ImIdxwuikdG2AwMIGEshRQu1Q/LFWhqVghNmKjiUy0xHgTq1kioCjjdIiOKlIiVCCtLU1tlwMZtk9/z+6I9MIwESOR/eWXg+Zs4fe/bkdd6z7PLak5w9G/A8zxMAAAa6WA8AALhwUUIAADOUEADADCUEADBDCQEAzFBCAAAzlBAAwAwlBAAwE7Qe4Jvi8bgOHTqk1NRUBQIB63EAAB3keZ6OHDmicDisLl1Of6zT6Uro0KFDysnJsR4DAHCWamtrdckll5x2m05XQqmpqZL+O3zPnj19z//pT3/qe+YJwaC7hzORjwrP9E7obDQ3NzvLbmxsdJadnJzsLNvllbgS9XkYi8Wc5ifq49LU1OQkt7GxUX/4wx9a/j8/nU5XQif+MXv27OmkhFy++Lt27eosO1Gf5JLbEkpKSnKW7VIoFHKWTQmdzOWbFSlxHxfXc7cnnxMTAABmKCEAgBlKCABghhICAJhxVkLLli1TXl6eUlJSNHz4cG3fvt3VrgAACcpJCa1fv16zZ8/W/PnztWvXLl1//fUqKCjQgQMHXOwOAJCgnJTQkiVL9KMf/Ug//vGPddlll6msrEw5OTlavny5i90BABKU7yXU2NioyspKjRs3rtX6cePG6a233jpp+2g0qvr6+lYLAODC4HsJffnll4rFYsrKymq1PisrS4cPHz5p+9LSUqWlpbUsXLIHAC4czk5M+OYnZT3Pa/PTs8XFxYpEIi1LbW2tq5EAAJ2M75ftufjii5WUlHTSUU9dXd1JR0fSfy9f4vISJgCAzsv3I6Hk5GQNHz5cFRUVrdZXVFRo5MiRfu8OAJDAnFzAtKioSIWFhRoxYoSuu+46lZeX68CBA5o6daqL3QEAEpSTErrnnnv073//W0888YS++OILDR48WH/+85/Vt29fF7sDACQoZ1/lMG3aNE2bNs1VPADgPMC14wAAZighAIAZSggAYIYSAgCYcXZiQmcVi8WcZcfjcWfZSUlJzrKbm5udZUtSSkqKs2zP85xlt3WFD7906eLu/V9TU5OzbJeGDBniLDsSiTjLlqR9+/Y5y3b5PHSV3ZFcjoQAAGYoIQCAGUoIAGCGEgIAmKGEAABmKCEAgBlKCABghhICAJihhAAAZighAIAZSggAYIYSAgCYoYQAAGYoIQCAGUoIAGCGEgIAmKGEAABmKCEAgBlKCABghhICAJihhAAAZighAICZoPUA51osFnOWnZSU5Czb5dyBQMBZtuv8Ll3cvY9y+e95/PjxhMy+/PLLnWUPHjzYWXZycrKzbEnavXu3s+yLLrrIWbar53hHcjkSAgCYoYQAAGYoIQCAGUoIAGCGEgIAmKGEAABmKCEAgBnfS6i0tFRXX321UlNTlZmZqdtvv12ffvqp37sBAJwHfC+hrVu3avr06XrnnXdUUVGh5uZmjRs3TseOHfN7VwCABOf7FRP+8pe/tLr9/PPPKzMzU5WVlRozZozfuwMAJDDnl+2JRCKSpPT09Dbvj0ajikajLbfr6+tdjwQA6CScnpjgeZ6Kioo0evToU14XqrS0VGlpaS1LTk6Oy5EAAJ2I0xKaMWOGPvjgA61du/aU2xQXFysSibQstbW1LkcCAHQizn4d9/DDD2vTpk3atm2bLrnkklNuFwqFFAqFXI0BAOjEfC8hz/P08MMP66WXXtIbb7yhvLw8v3cBADhP+F5C06dP15o1a7Rx40alpqbq8OHDkqS0tDR169bN790BABKY738TWr58uSKRiPLz89W7d++WZf369X7vCgCQ4Jz8Og4AgPbg2nEAADOUEADADCUEADBDCQEAzDi/dlxn06WLu94NBALOsrt27eosu6mpyVm2JH399dfOsuPxuLPspKQkZ9mNjY3OsnNzc51lZ2VlOcvev3+/s+zm5mZn2ZKUmZnpLLuqqspZ9ve+9z0nuR15fnMkBAAwQwkBAMxQQgAAM5QQAMAMJQQAMEMJAQDMUEIAADOUEADADCUEADBDCQEAzFBCAAAzlBAAwAwlBAAwQwkBAMxQQgAAM5QQAMAMJQQAMEMJAQDMUEIAADOUEADADCUEADBDCQEAzAStB0D7NDQ0OMvu0sXte5FYLOYsOxAIOMv2PM9Z9ueff+4se+jQoc6yX3jhBWfZv//9751lr1692lm2JK1du9ZZ9rFjx5xl9+/f30luPB5v97YcCQEAzFBCAAAzlBAAwAwlBAAwQwkBAMxQQgAAM5QQAMCM8xIqLS1VIBDQ7NmzXe8KAJBgnJbQjh07VF5eriuuuMLlbgAACcpZCR09elT33XefVqxYoe985zuudgMASGDOSmj69OkaP368brrpJle7AAAkOCfXjlu3bp2qqqq0Y8eOM24bjUYVjUZbbtfX17sYCQDQCfl+JFRbW6tZs2Zp9erVSklJOeP2paWlSktLa1lycnL8HgkA0En5XkKVlZWqq6vT8OHDFQwGFQwGtXXrVj3zzDMKBoMnXVG5uLhYkUikZamtrfV7JABAJ+X7r+NuvPFG7d69u9W6Bx98UAMHDtTcuXOVlJTU6r5QKKRQKOT3GACABOB7CaWmpmrw4MGt1vXo0UMZGRknrQcAXNi4YgIAwMw5+WbVN95441zsBgCQYDgSAgCYoYQAAGYoIQCAGUoIAGCGEgIAmDknZ8d1JoFAwFm253nOsl3OHY/HnWVLUjDo7mnm8jH/5tU9/PS/10v020UXXeQsu6yszFm2y+fhtdde6yxbkg4ePOgs+5VXXnGWvW/fPie5zc3N7d6WIyEAgBlKCABghhICAJihhAAAZighAIAZSggAYIYSAgCYoYQAAGYoIQCAGUoIAGCGEgIAmKGEAABmKCEAgBlKCABghhICAJihhAAAZighAIAZSggAYIYSAgCYoYQAAGYoIQCAGUoIAGAmaD0A2icQCCRktiR5npeQ2fF43Fl2KBRylj1s2DBn2c3Nzc6yx4wZ4yx7wYIFzrIlt6+hpqYmZ9n9+vVzktvY2NjubTkSAgCYoYQAAGYoIQCAGUoIAGCGEgIAmKGEAABmKCEAgBknJXTw4EHdf//9ysjIUPfu3XXllVeqsrLSxa4AAAnM9w+rfvXVVxo1apTGjh2rV155RZmZmfr73/+uXr16+b0rAECC872EFi9erJycHD3//PMt61x9KhcAkNh8/3Xcpk2bNGLECN11113KzMzUsGHDtGLFilNuH41GVV9f32oBAFwYfC+hffv2afny5RowYIBeffVVTZ06VTNnztQLL7zQ5valpaVKS0trWXJycvweCQDQSfleQvF4XFdddZVKSko0bNgwTZkyRT/5yU+0fPnyNrcvLi5WJBJpWWpra/0eCQDQSfleQr1799bll1/eat1ll12mAwcOtLl9KBRSz549Wy0AgAuD7yU0atQoffrpp63W7dmzR3379vV7VwCABOd7CT3yyCN65513VFJSor1792rNmjUqLy/X9OnT/d4VACDB+V5CV199tV566SWtXbtWgwcP1q9+9SuVlZXpvvvu83tXAIAE5+SbVW+99VbdeuutLqIBAOcRrh0HADBDCQEAzFBCAAAzlBAAwIyTExM6s5SUFGfZDQ0NzrKTk5OdZTc2NjrLlqRAIOAse+fOnc6y//nPfzrLfuaZZ5xlu3weNjU1OcueM2eOs+zNmzc7y5b++yF9V+644w5n2bFYzEluR17zHAkBAMxQQgAAM5QQAMAMJQQAMEMJAQDMUEIAADOUEADADCUEADBDCQEAzFBCAAAzlBAAwAwlBAAwQwkBAMxQQgAAM5QQAMAMJQQAMEMJAQDMUEIAADOUEADADCUEADBDCQEAzFBCAAAzQesBzrVoNOosOxAIOMtuampylu1ybkn65JNPnGXv3r3bWXZjY6Oz7KNHjzrLdvlcicVizrLj8biz7D59+jjLltzO7jLb1Wu/I7kcCQEAzFBCAAAzlBAAwAwlBAAwQwkBAMxQQgAAM5QQAMCM7yXU3Nysxx57THl5eerWrZv69++vJ554wum57gCAxOT7h1UXL16s5557TqtWrdKgQYO0c+dOPfjgg0pLS9OsWbP83h0AIIH5XkJvv/22fvjDH2r8+PGSpH79+mnt2rXauXOn37sCACQ4338dN3r0aL322mvas2ePJOn999/Xm2++qVtuuaXN7aPRqOrr61stAIALg+9HQnPnzlUkEtHAgQOVlJSkWCymRYsW6d57721z+9LSUv3yl7/0ewwAQALw/Uho/fr1Wr16tdasWaOqqiqtWrVKTz31lFatWtXm9sXFxYpEIi1LbW2t3yMBADop34+E5syZo3nz5mnixImSpCFDhmj//v0qLS3V5MmTT9o+FAopFAr5PQYAIAH4fiR0/PhxdenSOjYpKYlTtAEAJ/H9SGjChAlatGiRcnNzNWjQIO3atUtLlizRQw895PeuAAAJzvcSevbZZ/X4449r2rRpqqurUzgc1pQpU/SLX/zC710BABKc7yWUmpqqsrIylZWV+R0NADjPcO04AIAZSggAYIYSAgCYoYQAAGZ8PzHhQvbNz0f5KRaLOct2/RmuN954w1l29+7dnWVnZGQ4y163bp2z7O9///vOsl0+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rk8//dR6rA4rLS1VIBDQ7NmzrUc5o4MHD+r+++9XRkaGunfvriuvvFKVlZXWY51Wc3OzHnvsMeXl5albt27q37+/nnjiCcXjcevRTrJt2zZNmDBB4XBYgUBAGzZsaHW/53lauHChwuGwunXrpvz8fH300Uc2w/6P083d1NSkuXPnasiQIerRo4fC4bAeeOABHTp0yG7g/+9Mj/f/mjJligKBgMrKys7ZfB2VsCW0fv16zZ49W/Pnz9euXbt0/fXXq6CgQAcOHLAe7bS2bt2q6dOn65133lFFRYWam5s1btw4HTt2zHq0dtuxY4fKy8t1xRVXWI9yRl999ZVGjRqlrl276pVXXtHHH3+s3/zmN+rVq5f1aKe1ePFiPffcc1q6dKk++eQTPfnkk/r1r3+tZ5991nq0kxw7dkxDhw7V0qVL27z/ySef1JIlS7R06VLt2LFD2dnZuvnmm1uuE2nldHMfP35cVVVVevzxx1VVVaUXX3xRe/bs0W233WYwaWtnerxP2LBhg959912Fw+FzNNm35CWoa665xps6dWqrdQMHDvTmzZtnNNG3U1dX50nytm7daj1Kuxw5csQbMGCAV1FR4d1www3erFmzrEc6rblz53qjR4+2HqPDxo8f7z300EOt1t1xxx3e/fffbzRR+0jyXnrppZbb8Xjcy87O9v7v//6vZV1DQ4OXlpbmPffccwYTtu2bc7flvffe8yR5+/fvPzdDtcOp5v7HP/7h9enTx/vwww+9vn37er/97W/P+WztlZBHQo2NjaqsrNS4ceNarR83bpzeeusto6m+nUgkIklKT083nqR9pk+frvHjx+umm26yHqVdNm3apBEjRuiuu+5SZmamhg0bphUrVliPdUajR4/Wa6+9pj179kiS3n//fb355pu65ZZbjCfrmJqaGh0+fLjVazUUCumGG25IyNdqIBDo9EfR8XhchYWFmjNnjgYNGmQ9zhl1uguYtseXX36pWCymrKysVuuzsrJ0+PBho6k6zvM8FRUVafTo0Ro8eLD1OGe0bt06VVVVaceOHdajtNu+ffu0fPlyFRUV6ec//7nee+89zZw5U6FQSA888ID1eKc0d+5cRSIRDRw4UElJSYrFYlq0aJHuvfde69E65MTrsa3X6v79+y1G+lYaGho0b948TZo0qVNcHPR0Fi9erGAwqJkzZ1qP0i4JWUInfPOrHjzPc/pFZH6bMWOGPvjgA7355pvWo5xRbW2tZs2apc2bNyslJcV6nHaLx+MaMWKESkpKJEnDhg3TRx99pOXLl3fqElq/fr1Wr16tNWvWaNCgQaqurtbs2bMVDoc1efJk6/E6LJFfq01NTZo4caLi8biWLVtmPc5pVVZW6umnn1ZVVVXCPL4J+eu4iy++WElJSScd9dTV1Z30jquzevjhh7Vp0yZt2bLlW311xblWWVmpuro6DR8+XMFgUMFgUFu3btUzzzyjYDDYab/9sXfv3rr88stbrbvssss6/Qksc+bM0bx58zRx4kQNGTJEhYWFeuSRR1RaWmo9WodkZ2dLUsK+VpuamnT33XerpqZGFRUVnf4oaPv27aqrq1Nubm7L63T//v169NFH1a9fP+vx2pSQJZScnKzhw4eroqKi1fqKigqNHDnSaKr28TxPM2bM0IsvvqjXX39deXl51iO1y4033qjdu3erurq6ZRkxYoTuu+8+VVdXO/1K6bMxatSok06B37Nnj/r27Ws0UfscP378pC8DS0pK6pSnaJ9OXl6esrOzW71WGxsbtXXr1k7/Wj1RQJ999pn++te/KiMjw3qkMyosLNQHH3zQ6nUaDoc1Z84cvfrqq9bjtSlhfx1XVFSkwsJCjRgxQtddd53Ky8t14MABTZ061Xq005o+fbrWrFmjjRs3KjU1teUdYlpamrp162Y83amlpqae9HerHj16KCMjo1P/PeuRRx7RyJEjVVJSorvvvlvvvfeeysvLVV5ebj3aaU2YMEGLFi1Sbm6uBg0apF27dmnJkiV66KGHrEc7ydGjR7V3796W2zU1NaqurlZ6erpyc3M1e/ZslZSUaMCAARowYIBKSkrUvXt3TZo0yXDq088dDod15513qqqqSi+//LJisVjLazU9PV3JyclWY5/x8f5mWXbt2lXZ2dm69NJLz/Wo7WN7ct7Z+d3vfuf17dvXS05O9q666qqEOM1ZUpvL888/bz1ahyXCKdqe53l/+tOfvMGDB3uhUMgbOHCgV15ebj3SGdXX13uzZs3ycnNzvZSUFK9///7e/PnzvWg0aj3aSbZs2dLmc3ry5Mme5/33NO0FCxZ42dnZXigU8saMGePt3r3bdmjv9HPX1NSc8rW6ZcuWTjt3Wzr7Kdp8lQMAwExC/k0IAHB+oIQAAGYoIQCAGUoIAGCGEgIAmKGEAABmKCEAgBlKCABghhICAJihhAAAZighAIAZSggAYOb/AUtvI/3+8mzwAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "makepixelimage(\"images\", 16)" ] }, { "cell_type": "markdown", "id": "4d148bec", "metadata": {}, "source": [ "1b) Create a 32x32 pixel image." ] }, { "cell_type": "code", "execution_count": 8, "id": "d97255d1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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554+x/bVV1+9jiu8dvX19Vq+fLl2796t2tpa9fT0qKKiQl1dXcmadDiefrZTGvjHc/z48XryySe1Z88e7dmzR/PmzdO9996bDJrreiy9AeDTn/60t3Tp0j73TZ482fve977naEWp98QTT3jTp093vYzASPJefPHF5J/Pnz/v5efne08++WTyvrNnz3rRaNT7yU9+4mCFqfHh7fQ8z1u8eLF37733OllPUNra2jxJXn19ved56Xs8P7ydnpeex9PzPG/MmDHez3/+8+t+LPv9lVB3d7f27t2rioqKPvdXVFSooaHB0aqCcejQIRUWFqqkpERf+cpXdPjwYddLCkxzc7NisVif4xoOhzV37ty0O66SVFdXp9zcXE2aNEkPPvig2traXC/pmrS3t0uScnJyJKXv8fzwdl6QTsezt7dXW7ZsUVdXl8rKyq77sez3IXT8+HH19vYqLy+vz/15eXmKxWKOVpV6s2bN0qZNm7R9+3b97Gc/UywW05w5c3TixAnXSwvEhWOX7sdVkiorK/X8889r586devrpp9XY2Kh58+aZv9uqv/A8T1VVVbrjjjtUWloqKT2P56W2U0qf49nU1KSRI0cqHA5r6dKlevHFF3XzzTdf92PZ76ZoX86HvwjK87xAvzDrequsrEz+97Rp01RWVqabbrpJGzduVFVVlcOVBSvdj6skLVq0KPnfpaWlmjlzpoqLi/XKK69o4cKFDld2dVasWKH9+/frD3/4w0WPpdPxvNx2psvx/OQnP6k333xTp06d0v/93/9p8eLFqq+vTz5+vY5lv78SGjt2rDIyMi5K4La2touSOp2MGDFC06ZN06FDh1wvJRAX3vk32I6rJBUUFKi4uHhAHttHHnlEL7/8sl577bU+X7mSbsfzctt5KQP1eGZlZekTn/iEZs6cqZqaGk2fPl3PPPPMdT+W/T6EsrKyNGPGDNXW1va5v7a2VnPmzHG0quAlEgkdPHhQBQUFrpcSiJKSEuXn5/c5rt3d3aqvr0/r4ypJJ06cUEtLy4A6tp7nacWKFXrhhRe0c+dOlZSU9Hk8XY7nR23npQzE43kpnucpkUhc/2OZ8rc6BGDLli1eZmam94tf/MJ76623vJUrV3ojRozw3n//fddLS5nvfOc7Xl1dnXf48GFv9+7d3r//+797kUhkQG9jR0eHt2/fPm/fvn2eJG/NmjXevn37vL/+9a+e53nek08+6UWjUe+FF17wmpqavPvvv98rKCjw4vG445XbXGk7Ozo6vO985zteQ0OD19zc7L322mteWVmZ97GPfWxAbefDDz/sRaNRr66uzmttbU3eTp8+naxJh+P5UduZLsdz1apV3q5du7zm5mZv//793mOPPeYNGTLE27Fjh+d51/dYDogQ8jzP+/GPf+wVFxd7WVlZ3m233dbnLZPpYNGiRV5BQYGXmZnpFRYWegsXLvQOHDjgelnX5LXXXvMkXXRbvHix53n/fFvvE0884eXn53vhcNi76667vKamJreLvgpX2s7Tp097FRUV3rhx47zMzExvwoQJ3uLFi70jR464XrbJpbZPkrdhw4ZkTTocz4/aznQ5nt/4xjeSr6fjxo3zPvOZzyQDyPOu77HkqxwAAM70+98JAQDSFyEEAHCGEAIAOEMIAQCcIYQAAM4QQgAAZwghAIAzhBAAwBlCCADgDCEEAHCGEAIAOEMIAQCc+X9aFKw1BD+6OwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "makepixelimage(\"images\", 32)" ] }, { "cell_type": "markdown", "id": "ff310800", "metadata": {}, "source": [ "2) Upload a different image into a folder called \"my_images\". Then use the makepixelimage( , ) function to create an 8x8, 16x16 and 32x32 pixel image and see if the others in the class can guess your original image\n", "\n", "**Many answers possible.**" ] }, { "cell_type": "code", "execution_count": 9, "id": "0b6617b2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "makepixelimage(\"my_images\", 8)" ] }, { "cell_type": "code", "execution_count": 10, "id": "a11b92c1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaEAAAGdCAYAAAC7EMwUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAhOElEQVR4nO3dfXBU5f3+8WtJyCaEZCUgCQsJBIcRJIg82QooUBEbEJ9FRAMjrYUBhBBFoGjLVwsRWikqBQY6AmqjTGcEKZViVAQsoCEBwQdAaoQoDQGlu5BAIMn5/dFfMo2EkMC5ubPwfs2ccfbsyXU+rtlcnt2zZz2O4zgCAMCCRrYHAABcuSghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANaE2x7gxyoqKnTo0CHFxMTI4/HYHgcAUE+O4+j48ePy+/1q1Kj2Y50GV0KHDh1SYmKi7TEAABepoKBAbdq0qXWbBldCMTExkqR33nlH0dHRruenpqa6nlkpPNzcw9m2bVtj2S1atDCWbdrQoUONZRcWFhrLzs3NNZY9bNgwY9mTJ082lp2SkmIsu7i42Fi2JB05csRYts/nM5b97rvvGsk9fvy4rr/++qq/57VpcCVU+RJcdHS0mjZtaizfBJPZYWFhxrJNlqdpUVFRxrK9Xq+xbJOPucnHxOTvuMnHxOTzR9J5X3K6GCZnj42NNZYt1e33hRMTAADWUEIAAGsoIQCANZQQAMAaYyW0cOFCJScnKzIyUj169NDmzZtN7QoAEKKMlNDKlSuVnp6uGTNmaMeOHbr55puVmpqqgwcPmtgdACBEGSmhefPm6Re/+IV++ctfqlOnTpo/f74SExO1aNEiE7sDAIQo10vo9OnTys3N1aBBg6qtHzRokLZs2XLW9qWlpQoGg9UWAMCVwfUSOnr0qMrLyxUfH19tfXx8fI2fQM/MzJTP56tauGQPAFw5jJ2Y8ONPyjqOU+OnZ6dPn65AIFC1FBQUmBoJANDAuH6djBYtWigsLOyso56ioqKzjo6k/14axeTlUQAADZfrR0IRERHq0aOHsrOzq63Pzs5W79693d4dACCEGbliYEZGhtLS0tSzZ0/ddNNNWrJkiQ4ePKixY8ea2B0AIEQZKaEHH3xQ33//vZ599ln9+9//VkpKit555x2jX0cAAAg9xq6dPm7cOI0bN85UPADgMsC14wAA1lBCAABrKCEAgDWUEADAGnNf6n6R8vPz1aRJE9dzTX5f+9VXX20s2+SVJMrKyoxlS9KRI0eMZffv399Y9ty5c41l13T1ELd89tlnxrL//Oc/G8t+9dVXjWVPmzbNWLYkPfnkk8ayW7RoYSx76dKlRnJPnTpV5205EgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBqP4ziO7SH+VzAYlM/n09q1axUdHe16fk5OjuuZlbKysoxlHzx40Fj2K6+8Yixbkl577TVj2a1btzaWXVhYaCy7a9euxrKPHTtmLPvw4cPGsisqKoxlr1u3zli2JCUlJRnLHj16tLHsUaNGGckNBoNKTExUIBBQbGxsrdtyJAQAsIYSAgBYQwkBAKyhhAAA1lBCAABrKCEAgDWUEADAGtdLKDMzU7169VJMTIxatmypu+++W3v37nV7NwCAy4DrJbRx40aNHz9e27ZtU3Z2tsrKyjRo0CAVFxe7vSsAQIgLdzvwH//4R7Xby5YtU8uWLZWbm6tbbrnF7d0BAEKY6yX0Y4FAQJIUFxdX4/2lpaUqLS2tuh0MBk2PBABoIIyemOA4jjIyMtS3b1+lpKTUuE1mZqZ8Pl/VkpiYaHIkAEADYrSEJkyYoF27dumNN9445zbTp09XIBCoWgoKCkyOBABoQIy9HPf4449rzZo12rRpk9q0aXPO7bxer7xer6kxAAANmOsl5DiOHn/8ca1atUoffvihkpOT3d4FAOAy4XoJjR8/XllZWXr77bcVExNT9Z0sPp9PUVFRbu8OABDCXH9PaNGiRQoEAurfv79atWpVtaxcudLtXQEAQpyRl+MAAKgLrh0HALCGEgIAWEMJAQCsoYQAANYYv3bchUpOTlZMTIzrubVdveFiPfjgg8ay77vvPmPZrVq1MpYtScOHDzeWHR8fbyy7bdu2xrKPHDliLDsnJ8dYdtOmTY1l79mzx1i2ycdEkj799FNj2Vu2bDGWPXLkSCO59TlBjSMhAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsCbc9wLm88MILioiIcD23Q4cOrmdeCgMGDDCWPW3aNGPZkvT+++8byx4zZoyx7Pj4eGPZa9euNZYdFRVlLPurr74yln377bcby+7Vq5exbEk6fPiwsexmzZoZy37zzTeN5J48ebLO23IkBACwhhICAFhDCQEArKGEAADWUEIAAGsoIQCANZQQAMAa4yWUmZkpj8ej9PR007sCAIQYoyWUk5OjJUuW6Prrrze5GwBAiDJWQidOnNDDDz+spUuXGv3ELwAgdBkrofHjx2vIkCEaOHCgqV0AAEKckWvHvfnmm8rLy1NOTs55ty0tLVVpaWnV7WAwaGIkAEAD5PqRUEFBgSZNmqTXX39dkZGR590+MzNTPp+vaklMTHR7JABAA+V6CeXm5qqoqEg9evRQeHi4wsPDtXHjRr300ksKDw9XeXl5te2nT5+uQCBQtRQUFLg9EgCggXL95bhbb71Vu3fvrrbu0UcfVceOHTV16lSFhYVVu8/r9crr9bo9BgAgBLheQjExMUpJSam2Ljo6Ws2bNz9rPQDgysYVEwAA1lySb1b98MMPL8VuAAAhhiMhAIA1lBAAwBpKCABgDSUEALCGEgIAWHNJzo67EFu3bj3rg61uiIiIcD2z0p49e4xlp6WlGct+5plnjGVLksfjMZbdo0cPY9lffvmlsewnn3zSWPbgwYONZSclJRnLdhzHWPY999xjLFuSvvnmG2PZ7dq1M5a9d+9eI7n/ez3Q8+FICABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAa8JtD3Auw4cPV2RkpOu5V199teuZlSoqKoxl33PPPcayf/rTnxrLlqSZM2cay+7Xr5+xbBO/f5V++OEHY9kmH++tW7cay96xY4ex7ISEBGPZkhQMBo1ll5WVGcv+2c9+ZiS3pKRECxcurNO2HAkBAKyhhAAA1lBCAABrKCEAgDWUEADAGkoIAGANJQQAsMZICX333Xd65JFH1Lx5czVp0kQ33HCDcnNzTewKABDCXP+w6rFjx9SnTx8NGDBA69atU8uWLfWvf/1LV111ldu7AgCEONdLaM6cOUpMTNSyZcuq1rVr187t3QAALgOuvxy3Zs0a9ezZUw888IBatmypbt26aenSpefcvrS0VMFgsNoCALgyuF5CX3/9tRYtWqQOHTpo/fr1Gjt2rCZOnKhXX321xu0zMzPl8/mqlsTERLdHAgA0UK6XUEVFhbp3767Zs2erW7duGjNmjB577DEtWrSoxu2nT5+uQCBQtRQUFLg9EgCggXK9hFq1aqXrrruu2rpOnTrp4MGDNW7v9XoVGxtbbQEAXBlcL6E+ffpo79691dbt27dPbdu2dXtXAIAQ53oJTZ48Wdu2bdPs2bO1f/9+ZWVlacmSJRo/frzbuwIAhDjXS6hXr15atWqV3njjDaWkpOi5557T/Pnz9fDDD7u9KwBAiDPyzap33HGH7rjjDhPRAIDLCNeOAwBYQwkBAKyhhAAA1lBCAABrjJyY4IaTJ0/KcRzXc59//nnXMys99dRTxrLXrVtnLLtp06bGsiXpueeeM5bdpUsXY9kDBw40ln3//fcby54wYYKx7L/85S/Gsk2ezPTaa68Zy5ak4uJiY9n//Oc/jWWXlZUZyS0tLa3zthwJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgTbjtAc7liy++UOPGjV3P/f77713PrHTy5Elj2ampqcaymzVrZixbklatWmUs+/Tp08ayu3fvbiz7mmuuMZa9Z88eY9kZGRnGsjds2GAs++abbzaWLUnFxcXGst977z1j2aYel5KSEr300kt12pYjIQCANZQQAMAaSggAYA0lBACwhhICAFhDCQEArKGEAADWuF5CZWVlevrpp5WcnKyoqCi1b99ezz77rCoqKtzeFQAgxLn+YdU5c+Zo8eLFWrFihTp37qzt27fr0Ucflc/n06RJk9zeHQAghLleQlu3btVdd92lIUOGSJLatWunN954Q9u3b3d7VwCAEOf6y3F9+/bV+++/r3379kmSPv30U3300UcaPHhwjduXlpYqGAxWWwAAVwbXj4SmTp2qQCCgjh07KiwsTOXl5Zo1a5YeeuihGrfPzMzU//3f/7k9BgAgBLh+JLRy5Uq9/vrrysrKUl5enlasWKE//OEPWrFiRY3bT58+XYFAoGopKChweyQAQAPl+pHQlClTNG3aNA0fPlyS1KVLFx04cECZmZkaNWrUWdt7vV55vV63xwAAhADXj4RKSkrUqFH12LCwME7RBgCcxfUjoaFDh2rWrFlKSkpS586dtWPHDs2bN0+jR492e1cAgBDnegm9/PLLeuaZZzRu3DgVFRXJ7/drzJgx+s1vfuP2rgAAIc71EoqJidH8+fM1f/58t6MBAJcZrh0HALCGEgIAWEMJAQCsoYQAANa4fmKCWyIjIxUREeF6bkxMjOuZlW6//XZj2a1btzaWbVpcXJyx7JKSEmPZe/bsMZb9n//8x1j2uS6R5YYXX3zRWPavfvUrY9mtWrUyli2Z/T2cOnWqseyTJ09az+VICABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAa8JtD3AuzZo1U0REhOu5f/3rX13PrNS3b19j2evWrTOWvWjRImPZkhQdHW0se9u2bcayf/7znxvL/vLLL41lr1mzxlh2+/btjWUvXrzYWHZGRoaxbEn6+uuvjWU3a9bMWPby5cuN5J45c6bO23IkBACwhhICAFhDCQEArKGEAADWUEIAAGsoIQCANZQQAMCaepfQpk2bNHToUPn9fnk8Hq1evbra/Y7jaObMmfL7/YqKilL//v31+eefuzUvAOAyUu8SKi4uVteuXbVgwYIa7587d67mzZunBQsWKCcnRwkJCbrtttt0/Pjxix4WAHB5qfcVE1JTU5WamlrjfY7jaP78+ZoxY4buvfdeSdKKFSsUHx+vrKwsjRkz5uKmBQBcVlx9Tyg/P1+FhYUaNGhQ1Tqv16t+/fppy5YtNf5MaWmpgsFgtQUAcGVwtYQKCwslSfHx8dXWx8fHV933Y5mZmfL5fFVLYmKimyMBABowI2fHeTyearcdxzlrXaXp06crEAhULQUFBSZGAgA0QK5eRTshIUHSf4+IWrVqVbW+qKjorKOjSl6vV16v180xAAAhwtUjoeTkZCUkJCg7O7tq3enTp7Vx40b17t3bzV0BAC4D9T4SOnHihPbv3191Oz8/Xzt37lRcXJySkpKUnp6u2bNnq0OHDurQoYNmz56tJk2aaMSIEa4ODgAIffUuoe3bt2vAgAFVtyu/LGrUqFFavny5nnrqKZ08eVLjxo3TsWPH9JOf/ETvvvuuYmJi3JsaAHBZqHcJ9e/fX47jnPN+j8ejmTNnaubMmRczFwDgCsC14wAA1lBCAABrKCEAgDWUEADAGo9T21kGFgSDQfl8Pg0cOFDh4a5+llaSdN9997meWSk3N9dY9g8//GAsu3v37sayJenjjz82lt2nTx9j2T179jSWfc011xjLXrhwobHsrVu3Gsvu1KmTseyUlBRj2ZJ0yy23GMu+6667jGU3a9bMSG55ebl27typQCCg2NjYWrflSAgAYA0lBACwhhICAFhDCQEArKGEAADWUEIAAGsoIQCANZQQAMAaSggAYA0lBACwhhICAFhDCQEArKGEAADWUEIAAGsoIQCANZQQAMAaSggAYA0lBACwhhICAFhDCQEArKGEAADWUEIAAGvCbQ9wLkeOHFFYWJjruSUlJa5nVjp8+LCx7C5duhjLbtasmbFsSTpx4oSx7KNHjxrLXr9+vbHs5s2bG8s2+d8zKirKWHbTpk2NZZs2Y8YMY9mnT582lr13714juY7j1HlbjoQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWFPvEtq0aZOGDh0qv98vj8ej1atXV9135swZTZ06VV26dFF0dLT8fr9GjhypQ4cOuTkzAOAyUe8SKi4uVteuXbVgwYKz7ispKVFeXp6eeeYZ5eXl6a233tK+fft05513ujIsAODyUu8rJqSmpio1NbXG+3w+n7Kzs6ute/nll3XjjTfq4MGDSkpKurApAQCXJeOX7QkEAvJ4PLrqqqtqvL+0tFSlpaVVt4PBoOmRAAANhNETE06dOqVp06ZpxIgRio2NrXGbzMxM+Xy+qiUxMdHkSACABsRYCZ05c0bDhw9XRUWFFi5ceM7tpk+frkAgULUUFBSYGgkA0MAYeTnuzJkzGjZsmPLz8/XBBx+c8yhIkrxer7xer4kxAAANnOslVFlAX331lTZs2GD0kvUAgNBW7xI6ceKE9u/fX3U7Pz9fO3fuVFxcnPx+v+6//37l5eVp7dq1Ki8vV2FhoSQpLi5OERER7k0OAAh59S6h7du3a8CAAVW3MzIyJEmjRo3SzJkztWbNGknSDTfcUO3nNmzYoP79+1/4pACAy069S6h///61fmtefb5RDwBwZePacQAAayghAIA1lBAAwBpKCABgDSUEALDG4zSw09mCwaB8Pp8GDBig8HD3L+hw8uRJ1zMrvfbaa8ayH3roIWPZI0aMMJYtSR07djSW/bvf/c5Y9uDBg41lt2/f3lj2/PnzjWXfddddxrL79etnLHvatGnGsqX/fl7SFJMXdW7btq2R3PLycu3evVuBQKDWK+ZIHAkBACyihAAA1lBCAABrKCEAgDWUEADAGkoIAGANJQQAsIYSAgBYQwkBAKyhhAAA1lBCAABrKCEAgDWUEADAGkoIAGANJQQAsIYSAgBYQwkBAKyhhAAA1lBCAABrKCEAgDWUEADAGkoIAGCNx3Ecx/YQ/ysYDMrn86l9+/Zq1Mj9jiwsLHQ9s1JKSoqx7F27dhnLPnXqlLFsSXrvvfeMZX/22WfGso8ePWosu6CgwFh2RESEsewTJ04Yy/773/9uLPuVV14xli1Jjz32mLFsE38HK7Vu3dpIbnl5uXbv3q1AIKDY2Nhat+VICABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAa+pdQps2bdLQoUPl9/vl8Xi0evXqc247ZswYeTwezZ8//yJGBABcrupdQsXFxeratasWLFhQ63arV6/Wxx9/LL/ff8HDAQAub+H1/YHU1FSlpqbWus13332nCRMmaP369RoyZMgFDwcAuLy5/p5QRUWF0tLSNGXKFHXu3NnteADAZaTeR0LnM2fOHIWHh2vixIl12r60tFSlpaVVt4PBoNsjAQAaKFePhHJzc/Xiiy9q+fLl8ng8dfqZzMxM+Xy+qiUxMdHNkQAADZirJbR582YVFRUpKSlJ4eHhCg8P14EDB/TEE0+oXbt2Nf7M9OnTFQgEqhaTF3YEADQsrr4cl5aWpoEDB1Zbd/vttystLU2PPvpojT/j9Xrl9XrdHAMAECLqXUInTpzQ/v37q27n5+dr586diouLU1JSkpo3b15t+8aNGyshIUHXXnvtxU8LALis1LuEtm/frgEDBlTdzsjIkCSNGjVKy5cvd20wAMDlr94l1L9/f9Xne/C++eab+u4CAHCF4NpxAABrKCEAgDWUEADAGkoIAGANJQQAsMbj1OdUt0sgGAzK5/MpNja2zpf+qY/i4mLXMyv9+DNSbjp8+LCx7DZt2hjLlqSysjJj2enp6caye/XqZSx7w4YNxrKXLVtmLDsyMtJY9rBhw4xlv/rqq8ayJSkrK8tY9o8vAOCmRo3MHIc4jqPTp08rEAgoNja29hmMTAAAQB1QQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgDSUEALCGEgIAWEMJAQCsoYQAANZQQgAAayghAIA1lBAAwBpKCABgTbjtAX7McZxq/zSVb0JFRYWxbJNMz20y/9SpU8ayi4uLjWWXlpYayzb5eJvMDtXHRDL7u2Lyb5bpv7N1yfc4Jv8NL8C3336rxMRE22MAAC5SQUGB2rRpU+s2Da6EKioqdOjQIcXExMjj8Zx3+2AwqMTERBUUFCg2NvYSTOgO5r70QnV25r60mPviOY6j48ePy+/3q1Gj2t/1aXAvxzVq1Oi8zVmT2NhY6w/8hWDuSy9UZ2fuS4u5L47P56vTdpyYAACwhhICAFgT8iXk9Xr129/+Vl6v1/Yo9cLcl16ozs7clxZzX1oN7sQEAMCVI+SPhAAAoYsSAgBYQwkBAKyhhAAA1oR0CS1cuFDJycmKjIxUjx49tHnzZtsjnVdmZqZ69eqlmJgYtWzZUnfffbf27t1re6x6y8zMlMfjUXp6uu1Rzuu7777TI488oubNm6tJkya64YYblJuba3usWpWVlenpp59WcnKyoqKi1L59ez377LMN8vqEmzZt0tChQ+X3++XxeLR69epq9zuOo5kzZ8rv9ysqKkr9+/fX559/bmfY/1Hb3GfOnNHUqVPVpUsXRUdHy+/3a+TIkTp06JC9gf+/8z3e/2vMmDHyeDyaP3/+JZuvvkK2hFauXKn09HTNmDFDO3bs0M0336zU1FQdPHjQ9mi12rhxo8aPH69t27YpOztbZWVlGjRokNELILotJydHS5Ys0fXXX297lPM6duyY+vTpo8aNG2vdunX64osv9MILL+iqq66yPVqt5syZo8WLF2vBggX68ssvNXfuXP3+97/Xyy+/bHu0sxQXF6tr165asGBBjffPnTtX8+bN04IFC5STk6OEhATddtttOn78+CWetLra5i4pKVFeXp6eeeYZ5eXl6a233tK+fft05513Wpi0uvM93pVWr16tjz/+WH6//xJNdoGcEHXjjTc6Y8eOrbauY8eOzrRp0yxNdGGKioocSc7GjRttj1Inx48fdzp06OBkZ2c7/fr1cyZNmmR7pFpNnTrV6du3r+0x6m3IkCHO6NGjq6279957nUceecTSRHUjyVm1alXV7YqKCichIcF5/vnnq9adOnXK8fl8zuLFiy1MWLMfz12TTz75xJHkHDhw4NIMVQfnmvvbb791Wrdu7Xz22WdO27ZtnT/+8Y+XfLa6CskjodOnTys3N1eDBg2qtn7QoEHasmWLpakuTCAQkCTFxcVZnqRuxo8fryFDhmjgwIG2R6mTNWvWqGfPnnrggQfUsmVLdevWTUuXLrU91nn17dtX77//vvbt2ydJ+vTTT/XRRx9p8ODBliern/z8fBUWFlZ7rnq9XvXr1y8kn6sej6fBH0VXVFQoLS1NU6ZMUefOnW2Pc14N7gKmdXH06FGVl5crPj6+2vr4+HgVFhZamqr+HMdRRkaG+vbtq5SUFNvjnNebb76pvLw85eTk2B6lzr7++mstWrRIGRkZ+vWvf61PPvlEEydOlNfr1ciRI22Pd05Tp05VIBBQx44dFRYWpvLycs2aNUsPPfSQ7dHqpfL5WNNz9cCBAzZGuiCnTp3StGnTNGLEiAZxcdDazJkzR+Hh4Zo4caLtUeokJEuo0o+/6sFxnDp9/UNDMWHCBO3atUsfffSR7VHOq6CgQJMmTdK7776ryMhI2+PUWUVFhXr27KnZs2dLkrp166bPP/9cixYtatAltHLlSr3++uvKyspS586dtXPnTqWnp8vv92vUqFG2x6u3UH6unjlzRsOHD1dFRYUWLlxoe5xa5ebm6sUXX1ReXl7IPL4h+XJcixYtFBYWdtZRT1FR0Vn/x9VQPf7441qzZo02bNhwQV9dcanl5uaqqKhIPXr0UHh4uMLDw7Vx40a99NJLCg8PV3l5ue0Ra9SqVStdd9111dZ16tSpwZ/AMmXKFE2bNk3Dhw9Xly5dlJaWpsmTJyszM9P2aPWSkJAgSSH7XD1z5oyGDRum/Px8ZWdnN/ijoM2bN6uoqEhJSUlVz9MDBw7oiSeeULt27WyPV6OQLKGIiAj16NFD2dnZ1dZnZ2erd+/elqaqG8dxNGHCBL311lv64IMPlJycbHukOrn11lu1e/du7dy5s2rp2bOnHn74Ye3cuVNhYWG2R6xRnz59zjoFft++fWrbtq2lieqmpKTkrC8DCwsLa5CnaNcmOTlZCQkJ1Z6rp0+f1saNGxv8c7WygL766iu99957at68ue2RzistLU27du2q9jz1+/2aMmWK1q9fb3u8GoXsy3EZGRlKS0tTz549ddNNN2nJkiU6ePCgxo4da3u0Wo0fP15ZWVl6++23FRMTU/V/iD6fT1FRUZanO7eYmJiz3reKjo5W8+bNG/T7WZMnT1bv3r01e/ZsDRs2TJ988omWLFmiJUuW2B6tVkOHDtWsWbOUlJSkzp07a8eOHZo3b55Gjx5te7SznDhxQvv376+6nZ+fr507dyouLk5JSUlKT0/X7Nmz1aFDB3Xo0EGzZ89WkyZNNGLECItT1z633+/X/fffr7y8PK1du1bl5eVVz9W4uDhFRETYGvu8j/ePy7Jx48ZKSEjQtddee6lHrRu7J+ddnD/96U9O27ZtnYiICKd79+4hcZqzpBqXZcuW2R6t3kLhFG3HcZy//e1vTkpKiuP1ep2OHTs6S5YssT3SeQWDQWfSpElOUlKSExkZ6bRv396ZMWOGU1paanu0s2zYsKHG3+lRo0Y5jvPf07R/+9vfOgkJCY7X63VuueUWZ/fu3XaHdmqfOz8//5zP1Q0bNjTYuWvS0E/R5qscAADWhOR7QgCAywMlBACwhhICAFhDCQEArKGEAADWUEIAAGsoIQCANZQQAMAaSggAYA0lBACwhhICAFhDCQEArPl/XmyhT0o1pzIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "makepixelimage(\"my_images\", 16)" ] }, { "cell_type": "code", "execution_count": 11, "id": "98213e9f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "makepixelimage(\"my_images\", 32)" ] }, { "cell_type": "markdown", "id": "6586c9c3", "metadata": {}, "source": [ "**WORD CLOUDS** \n", "**Many Possible Answers**" ] }, { "cell_type": "code", "execution_count": 19, "id": "b2321440", "metadata": {}, "outputs": [], "source": [ "with open('john.txt','r') as file: #read in the text file\n", " gospeljohn = file.readlines()" ] }, { "cell_type": "markdown", "id": "9bfd1792", "metadata": {}, "source": [ "Word Cloud of Gospel of John with 30 words" ] }, { "cell_type": "code", "execution_count": 23, "id": "cbf2fc8a", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "myimagejohn = calculate_frequencies(gospeljohn)\n", "plt.imshow(myimagejohn, interpolation = 'nearest')\n", "plt.axis('off')\n", "plt.savefig('john.png', bbox_inches='tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "31579127", "metadata": {}, "source": [ "**Name that Tune!**\n", "**many possible answers**" ] }, { "cell_type": "code", "execution_count": 41, "id": "9162a49c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "saintsaens = [so, so , so, so, la, la,la,la,so, so , do1, do1, so, so,fa,fa,mi,mi,fa,so,la,la,fa,fa,re,re,re,re,so,so,so,so]\n", "play(saintsaens)" ] }, { "cell_type": "markdown", "id": "bcaf7cf6", "metadata": {}, "source": [ "**Random Numbers and Pi**" ] }, { "cell_type": "code", "execution_count": 52, "id": "1ed29562", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Percentage of Blue Points= 78.24\n", "Estimate of Pi= 3.1296\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHUAAAB6CAYAAACBUhxpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAArsklEQVR4nO19eXhV1b32e+Yp52SeJ8gABIJBGZRREUFxqCBqua0tdWhFa6vtbW2/6+2jtvXa2pb6WcWW4q22tJY6gGKxEicGBVTmKZCEQCaSk/GMOWP298frzxXUfpJoe0qa9TznOSc7e6+99m8e19ZpmqZhZAyroU/0AkbGZz9GkDoMxwhSh+EYQeowHCNIHYZjBKnDcIwgdRiOEaQOwzGC1GE4jP/sG/b396O1tRVOpxM6ne6fffuzcmiaBp/Ph7y8POj1Z8CH2iDH5s2btSuvvFLLzc3VAGjr1q0b1PVNTU0agJHPED5NTU1nBONBc2ogEEBVVRVuvPFGLFmyZLCXw+l0AgCamprgcrkGff2/4/B6vSgsLPwAdp80Bo3UhQsXYuHChYNemAwRuS6XawSpgxxnqq7+4To1HA4jHA5/8LfX6z3t/4EAsG4dsHgx/163DliwANiwAQiHAbMZ+I//ABwIAE8/DUQigKYBViuwdCknuPde4O67gZdfBnbvBu65B3jtNZ5rsQAXXAB885vAI48A27cDOh2vdTg+uhC5uaYBn/scsGkTj734oppv6VLA7QZuuUXN2doK/PGPwFe+Atx8M69bvPj0e7jdXOv99wNZWfz7u9/leh56iOeuWgU8/zxwzTXA1752+vVnOHSfJvWm0+mwbt06LFq06O+ec9999+H+++//yHGPxwOXy4XVq4G//Q3o7AQuvhhYswY491zg6FGgpgYoLwcmTwamaTtRePhlNLWbUdrzHi4sa4G1qgI4dgxobgZsNiApCWhsBMaNA7KzgW3bgFmzgAMHgLY2IiUpCZg5k4javZs3u+46AnvUKODECeDUKWDHDmDGDCLLZOJ8+/cDJSX8ttkAoxFobwdSUjh/fz+QlgZceSUQCgFz5wJXXcW577gDWLQI6O7mmjweoK8PqK8H7HY+6JIlwH33AX4/kV5aCjz9NLxWK5KTkz+A2Sfi5R+N1I/j1MLCwg8W+MQTJNy2NiAe5/Pp9fwdCJCIHQ5gTFkMFo8bvlMB3IzVmG/ajOR0E/p8UYwOHUZ3ahnMng64DAHoi4uA48d5cUUFgb17Nyc1mYiYzEwSQFYWjzU3AwYDMHUqsHcvARsIEHFJSZQMFRXAm29ShDgcnK+/n+cajfx96aVAcjKRtXQpsH49EdnZSUQHg+R2vR6IRjmvwQBMmQJ0dQFHjgA+H1BQAJxzDlBUBO9PfjIopP7Dxa/FYoHFYvnY/7ndlFx9fXw+gPBJSiJTAZSC8TjgCxhhycmDzhbDmo7l6LJV4L3+KagsaMYlwRfxl+75GKc/hFtiv4Gjph7GWB/0Oh2Bm59P4MXjlOdVVUBdHYFptQJNTeTIeBzo6CDyNI3/D4VIHDYbAT55MvDWW0BeHrnrlVd4nk5HQtm1i1zt9QLPPQekp/O61FSgpwfIyOCD9fTwHqEQkXzkCBCLEaF6PddVVETOHeT4p/upA8d//Rdh4HCQSEVm+P2Ay0WCdziIh5tuAt57D9h23AizdTQe7h6N5GTgRLgSlusvw0ur+rHfeT6Sw0EU6GoxKfI27KYIksIx9O0/DluyFcbcVOq7bduI1IULqRO/8Q0lPkMhoKEBGDMG6O0lcmbMoDg2mYCdOwn81lZyp9VKhBYWUnQ7ndQbDgcRWVDAh2lo4HltbfxfJMK/o1ElQfLyyNXBIPCznwFXX02AfMgO+aQxaKT6/X7U1dV98HdDQwP27t2LtLQ0FBUVDWqu884DtmyhGgoEqGaiURKu1QpccgmPHzwIvPsupaLZzGs1TdktzzwD5OXr4evLw2/Sf4gTNX0ot9ZjSeYWFLW9gwu0rejypMNhSUKBKweO+noCdt8+TuZ0Ug/X13Niux0oLgYOHSKSX3+d4sPjUcgIh9W300lkOJ2kTrtdiZ69e4kwo5HIKykhQTidvBbgt9dLpMq8y5bRXsjKGiyKBq9T33zzTcydO/cjx5ctW4Ynn3zyE6/3er0f6IdQyIW77ybc6upI4NEoGaG8XBm5R48SJiYTRbXRSOSmpFDSXXIJ8Oc/Ex7xOOGTkkLmOTfjJMa/vRoVOIKni7+H826YiFzfYXzuF/Ogn34+JwiHKYIjERonTidF8P/8D5FkMPAjHGWx0Nh5912KUbOZlOl283c0SuTFYuS2NWv48H4/53a7KYaTkjin2801GAyc2+ulmLr+emDVqtNgdiY6ddCx34suugiapn3kcyYI/fDYtInP3dRENWK3k0h1OiKyp4ffA59X7JFgkDjo7ASqq2mwdnYSPiYT5yoqAtrNxXi+6kd4ffmzeKFpKn7+qBWdz23F3bEH4NldS4o6cYILMRiAOXOA3/6WCPD7leWbnEyEuFzAt79NrhZK0+l4rt2uOM3tph5+8UXqjv5+IrG7W+nqTZuA73xH6XDhfLud81ZUDBqmQIJ1qrh/J09S1RQX83ggQBiEw4RLNMpjN94I/OlPJG5NIxJFPVkshGtaGhFeVsZ5o1ESzNq1SsR/x/J1XIJX8FvbXbiycRcsrWYUde2FwWamf7ttG/DXv3IxVisXOmYM8MILnExERyTCb72ev61WIqO/nwsUxP/2t0BuLimvrIxW97e+BYweTSIpLaWB1tnJ62w2/i85eUhwTWiW5sUXqVNbWoiohgYiRSz9uXMJAzE+f/Mbwi4aJRfabESkphG5djulZX8/562tJfza2tQ5BgNgTzLiDczDAXcmfmB5CNG2TvhCevT7/cDWrQw+AKSUhQvpbuzcSR3c3Q288w45rbCQwDcYKE6dTiJCp6MVG4txsTYbF1dQQL+2vJwLCwRIME4ncNttQE4OFyri6/zzhwTXhCJVpwMmTaIa0uv5rCdPknjDYRJ2Rwfth1iMCA+HKcVOnSLcolHaHX19/IifazQS7gYD59DrCe+KChKQJ2zF70NL8fzWLCyx/RX1tnNwYtLV6Jk2HysjN8JnSAYmTKA1p9fT9wIoqjs6aBmPH0/3qKxM6YVYjOcLt1ZWMsAB8BoRKcXFwNe/zoBDTw8pMCWF1wYCPP/OO4cG108TfBjKGKj0DQYXrriCcQJxB5OTCbeLL+bvd94hbDSNcKuooFQrLqad4vFwXoOBCE1OpviNxZThJDGC+fN5H5+Pc3i9JCinkzGDGTOAnb/cBktzPc6L7cQtY7bBGA3RNWluVtTR38/FFBYyHPbyy8Dbb3MhkyeT2199lVy8fDl1xpEjFBUWC3VsdTX1bm0tOfTuu7mgX/6SgOjr4xxTp/7jDaXPcjgcwGWXEQmaBkycyOecNYsIsVpp0ev1JG6ASDv/fH7Lx2gkUk0mIi0S4d8TJ/J6TeP/6up4z9paItJm43njx1PUb94MvBGYhvdClfDEneg86aM8P3TodOoRbgwGGQ7bvZtcuGuXEqclJXyIyy7jb7ud12sasGcPo0VHj1LUdHczkvWHP/Bhenu54FWrhgTXhBpKAAEt1mxjI42htWuB2bPJCI2NjGuvX0/d++qrRJQgLxQickwmYPp0cmBdHZlr0SJg5UpldIVCZKJolLgS+2TePH7v3g20d5lxCucgCAf6s0djbuw1FPt3Ij1NgzkS5EJLS6kbAwEqb5eLCDKbKWIkDJaURLfovvsYOfH7eeNdu0hBsZiyeq+6ir89Hj6QpvE+QxgJRWogwHX39fHveJzPrtdTOv3tb4yxJydTNdXXE5FHj9IYbW7m3+EwpdrOnUrUtrYy6SJSACC8ysoo7isryYBWK/Dzn/PbaOQHRhM6beOwo3Icyt/ajZBhPMqCjShI1hFRnZ3kvM5OcpVOR+4MhfjR61Xo0O0GvvhFIjwjg9+33ELKbW/nOaKLPR4lep1OPvAQRkLF77p19BKsVj5XcTER1tFBovb5GJBYsYLWbnk5OdDh4DmjR5NDc3IIC/Eq+vuJ3L4+HjeZCOf8fBqVY8YQ1k4nCUsSCN3dtFXE3dy3D/iJ/cdoNJTgm6UvwZdbrszoeJwXahpv6PXyZrEY/5eezofcsYMPVVvLCFFXlxKrycm8WXo6EW6zAWPHUjQvWAA88MCQ4JpQpC5YoCz4MWMo/ga6fjYbz2ttBX71KyKpp4fHCgp47dixhHFWFs/3epUebmjg+dEoGefkScJb/NdgkDH41FTet6iIyJRrurqAoilZ+GH2StRGS3Bh4x/wUmAOHu28Dl5zGm8iNUNmswo8xGKkIKOR+dW5c1VEqreXCzh5Uin/tjZah0JdS5ZQpA8hlwokGKmbNhEOElyYMoVEb7WSYwwGEnEsxk9NDeHk8ZDTiooowfLyCAvxUSMRFVrV6XhNLKbcHOFcl4sIDQR4zOPh73hcRbEOHWKOPRQC3PosfCXwKP5k/DI2R2dSdDid/NbpSE0SGdm+nRe98w4pZ/p0LjQ9Xd0sFiMVCnKdTi5yxQpa0089NSS4JtSlCYVcqKwk8eblkRMDAcJiYJhV0yhix42jrhX7QpjEYOC3xNDNZl4bjfJjNhPmou70es6Xl0dCsFrJtdnZhOmOHSSYlhZKyJwcrisaJdEYDEBpeg9+YHwA09PrYH5vO8VnUxMX5vdz4WYzreMvfpHGUnk53ZsDB06fLB5XIUeAFKXXM/b7xz+eXS7Nhg3qmeJxRtLEJ5VMzZw5NGqWLSNxl5fzeGqqytgMzGPrdETIhAlEiHggkkqVe+n15PZQiPp58mQy2rFjxE9jI+fu7aVh1dfHNd1+O+/TEkjFzn127K12Y4t/EgInO4gUETMOB30lgGmkyZNVnFmiIy6X0jWysFhMGQJDLKFNqPUbCpEDDAY+m9Op/M1olJZvbS0l1ssv09rt6iIMiov52+8n8qZOpaTr7eWxdeuAr36V1nQspvxZYQ6jkdGsLVuI7L17uZ7eXv4vNZWSsbKS6nH7dqqHujoSzLZtwMO4C50xJ/o1A/SGKGZpO4lUiXPW1QEPPkgDwGZThpWIi2BQiRu9ng+enq5CZRMnDgmuCeVUq5VuXUkJcOutdG9mzODzjR5Nbmlvp6/u96tqEL+fZUK9ver5TSYlZi0W4OGHqcpEuYRCdGdcLp5/6hSJpLiYEsBspkEmFRf9/fwcPEgxXFVF1zItjeuy2YBeXRp+ju/iXW0aSk0nEQ73Ix6OEIl+PxfY0cFPSwsXm5xMcQMoMWKx8Hh2trLyUlJIFEMYCUXq0qWs+dq1i3CoqOAzfuMbKtPS30+r3+8/vQBAVJfLRXexr49clZGhku6pqZSASUmUhsXFtLItFiJ2714i12SiMWo0qiqWnh7lA584QY7v76ftcvQo7xeJEP57jFPxdGgx2uPpeCtQhUjdSSVOpdrB4yGFRCK8qaTZ0tKod1JSeNPjxymyRo8+O10ah4M2BECE7d/PZ9y2jchpbSViMzP5zKJi0tOVvxoI8H9bt5KDzj2XsHn7bRLIV75CKZaURAMoM5MMIdavz8c5BUmyFquVv8WtqqpSlnpSEokuPf19l0xvwc+cP8IafBEmRNETd/EGubmkkJQU3iAzU/lcEvf0+xkXlZxhTw+RumzZkKoegH+RBql166jbXn2VlSOnTlHsAhSRbjdw+DA5JTeX2bDkZOXj9/YShk1NKp3Z1kbiOHyYVm5nJ/+/ZQvn0+t53aRJhLdE5gAV1HE4lN+6a5eau6eHMO/pIfI1DcgptmFV+n/jqH4CGmzjEM8vpD7JyODNRaSkp9Maczq5iBkzyPrt7Sr5W1PDAMSaNSpjM4jxL4HUBQvIZZEIOSc1lUZOaiqB1turVM+4ccoXlSoTu52ALSxkMEKKwLu7yQBvvUV4aRoZRVwdk4kBD4uF80tXg5SlSvhS/GWpNh01igatzca/MzOJv6qZTtxt+xV+ZP4xrtf+BE/VLCLLaKReBRgRCYfJoTYbZXtbG2+Wna1qeJYtIxGsXz9oeP5LIHXTJgKnr4/P1NTE6kqbjdwg/mpmJvDTn6pghcHAb4eDAYLubuD3v1e6OSmJiXVxkwAVwRKXKT2dMJfIn0hLi0WV0KSlsf5br6fub2lRTJWURCI4cICSoSPgwEbPbPjdYXT9+hl1Q6tVJXXNZn6CQSLO6+XNIxFVMyVVEf+fmuq/NxKOVLebAYX8fOq+oiKKWJuNz5aeTg6SKNCFF5LzPB7CQgzM9nYVjdq9m0ZRIMAcd1+fQp7oZeH2zExmaQoLec/sbHL7nDnKBSoupoQoK1M12ZKXrajg79GjlZo0GoEWRymMdhPqUIyI7n25XVhI/ZmaqpLoXi8X6vWSgt1uIvjddznZEEKFCUVqIMAw50svMcPS1MQExqRJBExlpbLwc3JUfZgE4+12clNyslJPoRC5p6ODsGtqIjIkspSaStja7byH200929mpgvpZWZxfrOZgkJE7kZAA58vPp/FlNpPQJGhSWgrc/n/ScE/oXgSRhB4thf/w+ag/MzKUKDAYKApELCQl8QZGI32oIejUhAYf1q0j8Lu7VQH9ihUs1tu+napGCLezU7kc2dn0bQsL+czHjtF4qq8nsPv6VPotO1sFNaQgHiDnRyK8d36+4tzsbML92Wd5ns/HwIdOR4litRLu06fTqLNaKTVcLkqLnBxa3CHNCpczhobuEqQZveiP+qHXvR//dLmIWEm5RaOkHqmPlRuHw9SpV101KLgmPEsj/nUoxGcMBIDf/Y7Gn9msRCCgqjgvuIDiLhCg+H3qKba4BIMq4S4lLW1thM+kSSrcqmm8VkpZ2tqAG24gorxe4NprGbzo7WVxYV4erzObifT0dEqHcePIXGPGcG6jkRJ01Som53cVLsHDjnuwy3UxOrImcPFiTre2UryMGsUsTloaxQjAScePZ/3N2aZTN20iZQPUTZmZBHJjIxPk4TCf2WRSkspgYITp4EFyc0oKEVJbywDCqFHUu3l55Ki0NLpFx47x71iMHFlcrLoJKyvpTh08SAZ69lmKUEm0NDeTubKyeO3ttxOB2dmcLyeH3A6oase0NKCs0gZ/xfl4OnA12ixFpAybTSXWMzKoG0IhUlpyMll/4kQGxm+++ezTqYsXA//5n8BFF1GX3n47RZnEhFtbCVBx93JzCcTubiJJr2d/ktdL5LS1EZkNDYzPXnmlSni0tipODoUoKltaCMNDh1jl7/XyWp8P2LiR67LblURsbia3PvYYr33tNVX7VFWlxLwwmqYxQPRS/0I87l7C4LG4NrEYe1CPHiUFnzihIk5SD3U2+qkOB+uPbr6ZiPvRj5TOA1QyIxgk90mKLRikapL2x85OlbV69VUaR9XVDDxcdBE558MJj74+clc8Tu7euFGJ564u/t6wQdUTi04/fpwS4Y03OKfXSyIrKaEUzcmhxOns5PV9fUC/0YoXzNejzfO+PgEoNjZsUIne/n4V5NfpWKTV0DAkPzWh+VSXy4U1a0j1P/iByocCfGYp1paKD7OZBG23k+CTklSttMNBxLa3q5olh4NiU3x8q5WidscO1Q0QjfL83l7VdJWeTs43GlUddl+fIqqeno8m33U6ts00NpIwjx/nuZKYz8sDHP5T2JH5OVhPHqPeiMcpFpxOTiqZ+WiUCz/3XOCll+CNx8+efGogQOQ8+SRTZ0YjuWfJEnbm5+eruLfBQOq/8EICyW4nPCTR4XaTOIxGItRuJ9LLylQYcNIk6uOiIl773HNs8JYdByIRZaydfz5/33gjO/gzMsjRBoPKoEmjlgT2X3+dRNXYSJxYrfyeNo1rn3tNGu6IrsBTc59EaMZFiop7evgQdjtvKgn26647+3TqunUsqgsG+feSJQS4wcDa58ZGlYXq6FDuw003qY7CYJBIkES4BCB8Pp7T3KzixDt38lhLCzlHAvzFxUS61Up42mzktOxsbuPw+ONcW2srkSv5bbud51RVKSNO6s80TTVx7d5NYtx72IKDzul4uW0SnrPcwBsFAiqbIJ3rJhNl+bXXDgmuCTeUSkr4DPn5dEsOH6Z+q60lgCSAPpCTurtpiIg4FOu4v59egU5HBMViJHbx6UMhHrPZOIfXS7dKjKpnnyVMo1FauhK67Oxkj5MYPiYTkTpzJnW2z6d0cW8vP+K7xuMk1CNHKI3qjhuxo6UQv/9rKtxRpwo4ywNIa8G776qenkGOhBtKs2aRk958k26AppEzJTwqRdv9/QReYyNjrAARmJxMIEsMtr1dhftmzWLzWnu7aiGVspZIhFLi+ut5bXU18L//S6QGAjTC8vPpg44dS+Lo6CDCQyEi7cILOU97uxLBUptts9HWmTePhGG1kjD6+oCe5gAOd+fgDu9PlAMs8lwqI9zuQXeQy0h47NdioYj0+WjspabSgrzkEorI3FxSvFQHut3ksoYGGj2hEMVnWpoyXDwetrDMnHl6Oq6vjwj0etVcHg+R2dVFCWEwqFqmw4cZpSorY1OzyaTi85rGIEM8rmqF58yhOE9O5rpPnCCxiJT4whcYBSurtMBq12N6WQczBNK7qterUlOXiwsYwkg4Ui++WJW4ZmUROQ4HuWDyZD7zmDFEpKap8h+Tif5lSgrF4x138PykJMLkzTdZKF5RQe4OBpU3MXo0EZCWRut6+nSVjvP5OKd4GTYbJeGMGTx+zjkkvGCQBFFfz/OWLiUOLr9ctcccOqS+x48nN996K2BPsaLq0jykVI1SlCZhKrHauruBu+4aEkwT7tLcdhu5SRqss7JoyFxxBQP9PT3kyJoafux2PrfdTqQUFJAAJH139KgS19KakZ+vCriTksj1fX2qUVzTOE9jo6rWzMnh3xYLjaSNGwn32loSnagFqWyMx/ktQZFYTDGd1C7Pm8eqf7OZBLFtUwCjH7pdBe6lUApQ+z787neDLhFNOFLdbuC//5uGRHIygdLdrdo0NY3c4fPRzVi7lmK5uZlGSn4+XYkTJ1R328D6X71eNRtLk1RSkqov1ukUorOzef/UVHK/MI3DQaQMTAYAqm7b4WAtWV0diaC7W239IC0cgliHg/+XntsF57rx8HszYWpv5WL0ej6sy0VL8sknz666X0ABXKzISERxEaD2gVi6lJbn+PEEVmYmfc6GBnKUkObAAIa4OaEQdZwkxSVbIw1RFgstU5OJ3N/To2Lr0v4hBWmy5uxsHrdYSCCBAOeXjUakdycvj73D0uMjadW6OkqPgxtOYEXDNfBFLXQFbDYutrKSW9sNYSQcqU89xXrdv/yFPqB0IUglXySi4q1dXUSi06nypbt2qSKxD+/BJf2rNhvnmDVLJdZlB5yyMorpffuoH3t71SZmCxeSCAoKaAFLRYTdTr18xRUqFt/QwIS8TkfkZ2cD3/set0R84w3WXcneIMePK/3+dmgSOnSZ+Ev8GlKE2UzqLi8/ewvPtm2jIeF2syJQfEzpXAuFmC3p7qZOle38nE4CauZMFS6V8ODAQvmSEvqJ4tdKik90XlcXEZuWRu6aM4eSr7hYbY0Uj6vNWYRzn31WBfoBIkl2kgmHiehwmMnzkyeVOJZ6KylFKi3VocOSj+tSXiXlSAFzTQ2BMoSRcKSKXorFSJjRKAFqt6sIz9ix5BjhkqlTed4FF/DZpRIzN1dxgGSy3G4aYqEQxbTDoTyHaJRzTZpEohA3JitLWcxS/L1wodorMS+P5+zfr8KG0mgl925u5o5uBw6owjiABCVdeDNnAnqzCdMrfYhoRvRv3krZ39vLRd9335BgmtDKB4AP53AoV0avV+37gGqF8HiIpGiUurSkRNVs5ecToV1dagMt8Uc9Hoq8DRt4D4kudXbyd02N2rNJKv4BIqm1lff8/Od5TmEhubelBfjhD5n29HpJGDU1JI5jx1Qosr+fRDJ2rEreAyo4UVvL478zfgHHAmGUoxZfDv8BDnGUKyvPvtQboAwU6S4TnSrFddEoqT4WU8aTTkdDQ9KPNTW0fmWXG6tVBRgGbgHY0aGqCCsqVNJcWlpkcxTZGzIcJhK3bFHVgz09nOfBB1m1L5UTsRgt+AkT1PNIbP7YMbVjgOhcm43P1dYGuH1JOOE8B0ccU7B+4g8oqubM4QOdbSWigQD1aUEBgbVjhxKffX1qzylAWbViYUrdbl8fjRank5w0ZozaNe3UKSKqoIBB93HjVBG3iEMhHquVnDxrlgpABINEvOxI19NDA0i2HOjq4j0OHCDnx2J8BgnkT5ig3BpJv8leW7JzjNQv66ZMQZulGAvK3s+4axrDUfPnDxquCc/SlJerrYXS0wlMKY4WA8VspmieMYNAKS+nyM3MpG5rbiaQampI+VKcLdv8TZxIADudRJjPR9HX0aEKyKVPVbivu1vZLN/9rgrLyuahktOWe4l4TU8nsaalcY0mk9rAKzubPrfNRuOssJBSIS8P2PC6AxGdBdXHy3hCRwejKtXVg4ZrwrM0EgY0m+kW2GwERkoK9zaS3herlVZvRgapf9o0WrVSOShdCx0drBopLqY4LyvjsZoaZSU7naoaYuAekUePKr9TDCeXC3j0UYp32S5PWkcHziMdiU1Nqgh9y5bTi+GkO2DfPgb7xY+VXWc3uqegPX8SbzZ7NsXAEArPEmooSYPUjBkM8zmdBIrXSwqWaI1OR8qX0p2bbiIHSz3T8eNqryW7ncQhrRJSPSg7yM2erQL5R48S+WIcmc1EhjRAScuouDfia8rOaoEALdjdu4mc1lYSmmzyLTaO6NFolPo1JYVSSvprhZBcLiM6DnUAxUZmGbZtIwAGma1JuKEkO9IYDHxIiYu2txNIPT2k/IYG6sLWVkqk/n5WLhw/ToDm5NAXtdnIXbGY2hFH9gy+4gr+r6WF87lchJfdTsIKBFRsGVAG1urVqpWxt1dVofT1UQKUlKjoXk2NqtpPTyeSp09nKDQ3l8San8/19faq3Ljsur45ZRGePDQZgbRC7sE0hJFQTg0E+CaLo0cJEKtVFVT7/aqyQdwD0XFOJ0WbBM89HnJiXh4zKvE4uWvxYgYuXnmFyH7gARWwkZBfIKCK57OzSVgS8LdYOLfDwTXIjq1itEWj9Gel0kFiwzt3Um0Eg7zm0kvJzbW1PLekRIllgM8gud5YMIIGXzr2xrIxc8KEIcE1oUh9+mm1I/mRIwSK9JyWliqROnAXVquVfmp3t7IqpVFpzx5V0S8lm1KlIBWC4hZJVAcgR0+eTLFpt6uOiHCYYv7UKRJFKMQ5/X5lHMkWtenpattCMbQAXrtyJdckzV6SPi0oUNb7mDFcY3H1nzHRvB9T9HsA19VDgmtCxa80VQeDqi1CtgGorydlD3RlpFGsu5tA7eoiwlJSaFskJam3iuzdSw5tbKTYmzuXBCRNxJKbld3iDh1SOk4qKnJzaWidd57S/yIFZG8KiXJJRzpwuvHkcjEtOmrU6YVqolrCYYrjKVNoMK23L0WvOROW73+LUY8hjIQi1WIh4CTFJU67xG7FKpVsi3CCFIe5XKpb7pxzVCAeYLz1hRdUr87OnbwuL48WtCAgJ4d/f/7zavc56WGSCFBnJxG9cSOR29Sk/GmA9xy4D2V/v6rw3L6dHLlkCYlvzBjOJzo5GmU69b336OJENTOest6GhgVfOzs3x1q6lBQrG2iI/+Z0EgGjRqnaI3EjxPAR8SeuzAUX8HoRuQIwCQHKvsD5+URYaSmv93gI7OeeYxBH+lrFot68mQTV2koJYjYz7DcwnisEJvtzpKRQR375y2yuWrmSut7p5PNdfjnPycpS3Rc7d3LOUsNJZMea8NNpzyHQcBYG9KXtHyAisrJUb65Q87JlPCbVgdI2IUnrjg4C/qGH1PbzUvwt80rIzmSiWC4tpbiUQusdO1R55003kXDuvVeJ44ERIzGGIhHVgbh8OSNRkvx2uSiyAdoNLS00lLxe6u2DB/msDgcNqhMnFHE3G4vg740hLzuO9V/965DgmlCk3nKLqqPNy6MYFd9S9s5/7jl+i+kPEOkSFJedzAIBOvVdXSo4X1xMsSnvM4jF+C17Nkhlv1iqLS10X3Q6Jkik+kI24XK7KT5l5xyPh9KkupoptnHjePyVV9h96PHQAAwGyZkARfHMmbSAU1NJCBLW9HgAT58V+10zEQnFsej/zh0SXBOK1EceIULGjCEit24lRZvNp2/bJ695icd5XX+/2qZeEs9y3sAcp+jQ3l4FvPZ2iuSnnyYCwmEey81VuVZp5RAikFxtLMaEvmwzaLfToNu3j+fU17MN86GHmLF55BHlupw6RZ/1gguYsovHeV8piBNjzm4Hio2ncPGMEBx73xoSXBOK1D17WF1ns6leFRFDUiKSn08jaN48/na5GES47DJV8RCJqDoi4YDsbFqrkybx/8nJahdX8UGlj1X8TLtdBQhkl7TcXHbmyYsn9HqqDMnuyGvb5B0HM2eySeuSS1QkSfR0ezsJ8ZVXKHJlj4tIhOfU13OeZtMoPNl6KQLzFw0JrglF6oIFLOWUbrPeXrXbm9VKRJWUsJSlu5vW4X33MThfXc2/pc42EiHHS7x2/HieEwxSxEtAXdr3pfZJQoOhEA0gq5UiNSODCBk3jkbTvHnUg0YjRerx48piN5kYkVq7lvevq1N1yFKr5PeTwB57jEmHQ4dUUl9yv4cPcx0tbSZsaS3H2peGZv0mNPiwaRP9s1//mg8m7f5WKx/cbieArr2WFC69uvX1qtZnyhTVyigxW6+XLZ+lpTSMBvbYxGIMEZpMSm87nZy3tlY1X0nSoLtbvQbOZqPeG5gyk61mvV6+vGLFChKavOlLWjUmT+Y6pR8oHOZzCKf7fGrLAjk21DrPhHPqmjV8UKn7nTqViMnKIgfV1/O4z0dgHjumtnCVkF8wSAPpqqtUM1U8TmAWFSlf1+dTtUNSfDZhAhHa0kJxnZVF8Z+SQiQXFPAjfqls9ClhRoNBuU/bt1PsyhY+FouyGa67jpIgO5uSRHxwTeNazGa1+Vd2ttoGYSgjoUjdtImt/RLqa28nF5WXqyIued2I06nEXVsbRe7o0Ty/vZ3Uv3o1Rd3At2plZhKogMr8yIsUcnOpmzs6iJiNG0lg2dl0PSwW9V6hAwd4D7G8o1FKAouFFvu+ffxs385AhrhdUvhtNlP86vWUANLcFg6rxuqSEt6/q0u9EGIoY0hIXblyJUaPHg2r1YrJkydj69atQ7r54sVEiGxeJVmYbdtU+UdysnrJUE6OqqDXNCJi1Ci1s8qpUwSqFK6Vl7Oto7OTyJUsjGwQXVBAvSvcdugQ9WVrKwmgrY3SQnSzcFRmJg2ijg4iyO9XLRuxGAMO8+dT/ErYc8sWvpXa7aZfrGnqJYQSgWpoOH1HNskWDXYMGqlr167FXXfdhXvuuQd79uzB7NmzsXDhQjTKrseDGA4HEVRcrN4TI/oPIBfMnEnqlde6TJ+uCr4l+C+hOauVIqunhwjbswf4xS9UXHnsWAJY9lQ6eZKAlPojQL1VWqxvacCSNck+xLEY9Xl9veptknhwOMxXzIi1LWUsEriQrnd5w5XRqLa47epS5atDfIPJ4JG6YsUK3HzzzbjllltQUVGBhx9+GIWFhXj88ceHtIB77qEemzePURibjZZrbi7F3K5d5GYRsW+8QSD09TEGK6UiAlSLhfN1dKiKRL+fRoy4F2JpS0RKAvBStS+/Zd72doX0cJjXZGSouuC8PEqTjAwiR3LAUqZ6+eVEvuxVnJqq5pe3bA40iiQRMMRXvQ0OqZFIBLt27cKCBQtOO75gwQK8La/F+tAIh8Pwer2nfQaOt96igTN7NnXKjBlqgw2nk+IoPV3txZiTo3RbIECrMj2d14wapTZnln3xJX325ptEqjQCy74RA42WzExlFaekqF7ZoiJVhZiUxGv27+f6pQtv/nzeTwyepCS1G3h1tWrVjEZpwElztLTGWK3qlaryjvkhvpRxcC5NZ2cn4vE4smUvt/dHdnY22traPvaaBx98EPfff//fnXPxYlZBLlpEseR20xd94QXut3DDDaT86dNJuXfeSUty1SpySEEBWzc2bCCQ5s7luwgA+pjPP08krV5NN2ftWpbTrl/PkpJ332Xvqez9W1BAQjhwQOnyykrGhI8coRSRrdnPP5+deRddRMPm4otZ+XDrrSSIlSuJvGuuoQ+6ZIkqEHztNRJyU5PaDKSqioF9aVgeYuYN0AYxWlpaNADa22+/fdrxH//4x9rYsWM/9ppQKKR5PJ4PPk1NTRoAzePxfOL9/H5NW7OG3x8+/sQTmrZ69Uf/90nXf9Ix+X38uKbddhu/z+T89vbTz/P7ub4nnvj4NZ7p2jRN0zwezxnDTNM0bVCtjJFIBHa7Hc888wwWL178wfE777wTe/fuxebNmz9xDo/Hg5SUFDQ1NZ1RW97IYPtnYWEhent7kXwGMnlQ4tdsNmPy5Mmorq4+DanV1dW4Wt50/wnD937pXmFh4WBuPTJA2H3mSAWAb3/72/jSl76EKVOmYPr06Vi1ahUaGxuxfPnyM7o+Ly8PTU1NcDqd8Pl8KCwsHOHajxnCnQNhlZeXd2YXn5GQ/tB47LHHtOLiYs1sNmvnnXeetnnz5qFMM2hd8e80Pg1s/unbAwwcg217/3canwY2CS/mHhmf/UhwNaEF9957Lywf7usfGZ8KNgkVvyPjHzNGxO8wHCNIHYZjBKnDcIwgdRiOEaQOw5FQpH5WZTHDaWzZsgVXXXUV8vLyoNPpsP5s2p3lsyyLGU4jEAigqqoKjz766NAn+YxDlmc8pk2bpi1fvvy0Y+PGjdO+//3vJ2hF/3oDgLZu3bpBX5cQTh1KWczIOPOREKQOpSxmZJz5SKihpPvQa500TfvIsZEx+JEQpGZkZMBgMHyEK91u90e4d2QMfiQEqQPLYgaO6upqzJgxIxFLGlYjYV1vn7YsZrgOv9+POnmpLICGhgbs3bsXaWlpKCoqOrNJPnM7fBDjsyqLGU7jjTfe0AB85LNs2bIznmMknzoMx0jsdxiOEaQOwzGC1GE4RpA6DMcIUofhGEHqMBwjSB2GYwSpw3CMIHUYjhGkDsMxgtRhOP4fmNhDibh5wu0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "np.random.seed(1232023) \n", "def dist(x,y):\n", " d=np.sqrt(x**2+y**2)\n", " return d\n", "fig=plt.figure(figsize=(1,1))\n", "N=5000\n", "blue=0\n", "red=0\n", "for n in np.arange(0,N,1):\n", " x=np.random.rand(1)\n", " y=np.random.rand(1)\n", " if dist(x,y)<=1:\n", " plt.scatter(x, y,s=.1, marker='o', color='blue')\n", " blue=blue+1\n", " else:\n", " plt.scatter(x, y,s=.1, marker='o', color='red')\n", " red=red+1\n", "print(\"Percentage of Blue Points=\", (blue/N)*100)\n", "print(\"Estimate of Pi=\", 4* (blue/N))" ] }, { "cell_type": "markdown", "id": "ffa1dbc9", "metadata": {}, "source": [ "### Simulating Formula 1" ] }, { "cell_type": "code", "execution_count": 59, "id": "8b74e1cf", "metadata": { "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# frame 0\n", "c1=car(.43,.15,'car1.png',.14,0)\n", "c2=car(.2,.15,'car2.png',.12,0)\n", "simulate(c1,c2,0)\n", "#frame 1\n", "c1.speed=.8\n", "c1.go(.2,0)\n", "c2.speed=.8\n", "c2.go(.2,0)\n", "simulate(c1,c2,1)\n", "#frame 2\n", "c1.speed=.9\n", "c1.size=c1.size*.9\n", "c1.go(.2,.15)\n", "c1.image=\"car1left.png\"\n", "c2.speed=.9\n", "c2.size=c2.size*.9\n", "c2.go(.35,.15)\n", "c2.image=\"car2left.png\"\n", "simulate(c1,c2,2)\n", "frames=3\n", "from PIL import Image\n", "images = []\n", "for n in range(frames):\n", " exec('a'+str(n)+'=Image.open(\"'+str(n)+'.png\")')\n", " images.append(eval('a'+str(n)))\n", "images[0].save('F1a.gif',\n", " save_all=True,\n", " append_images=images[1:],\n", " duration=300,\n", " loop=0)" ] }, { "cell_type": "markdown", "id": "e00105b8", "metadata": {}, "source": [ "" ] } ], "metadata": { "celltoolbar": "Edit 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.3" } }, "nbformat": 4, "nbformat_minor": 5 }