Skip to content

Instantly share code, notes, and snippets.

@sandyaroma
Created January 11, 2021 23:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sandyaroma/d11b7a43b045bc817592bf21562bd999 to your computer and use it in GitHub Desktop.
Save sandyaroma/d11b7a43b045bc817592bf21562bd999 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center>\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n",
"</center>\n",
"\n",
"# Classes and Objects in Python\n",
"\n",
"Estimated time needed: **40** minutes\n",
"\n",
"## Objectives\n",
"\n",
"After completing this lab you will be able to:\n",
"\n",
"- Work with classes and objects\n",
"- Identify and define attributes and methods\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Table of Contents</h2>\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <ul>\n",
" <li>\n",
" <a href=\"#intro\">Introduction to Classes and Objects</a>\n",
" <ul>\n",
" <li><a href=\"create\">Creating a class</a></li>\n",
" <li><a href=\"instance\">Instances of a Class: Objects and Attributes</a></li>\n",
" <li><a href=\"method\">Methods</a></li>\n",
" </ul>\n",
" </li>\n",
" <li><a href=\"creating\">Creating a class</a></li>\n",
" <li><a href=\"circle\">Creating an instance of a class Circle</a></li>\n",
" <li><a href=\"rect\">The Rectangle Class</a></li>\n",
" </ul>\n",
" \n",
"</div>\n",
"\n",
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"intro\">Introduction to Classes and Objects</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Creating a Class</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The first part of creating a class is giving it a name: In this notebook, we will create two classes, Circle and Rectangle. We need to determine all the data that make up that class, and we call that an attribute. Think about this step as creating a blue print that we will use to create objects. In figure 1 we see two classes, circle and rectangle. Each has their attributes, they are variables. The class circle has the attribute radius and color, while the rectangle has the attribute height and width. Let’s use the visual examples of these shapes before we get to the code, as this will help you get accustomed to the vocabulary.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/ClassesClass.png\" width=\"500\" />\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>Figure 1: Classes circle and rectangle, and each has their own attributes. The class circle has the attribute radius and colour, the rectangle has the attribute height and width.</i>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"instance\">Instances of a Class: Objects and Attributes</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"An instance of an object is the realisation of a class, and in Figure 2 we see three instances of the class circle. We give each object a name: red circle, yellow circle and green circle. Each object has different attributes, so let's focus on the attribute of colour for each object.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/ClassesObj.png\" width=\"500\" />\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>Figure 2: Three instances of the class circle or three objects of type circle.</i>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The colour attribute for the red circle is the colour red, for the green circle object the colour attribute is green, and for the yellow circle the colour attribute is yellow. \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"method\">Methods</h3>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Methods give you a way to change or interact with the object; they are functions that interact with objects. For example, let’s say we would like to increase the radius by a specified amount of a circle. We can create a method called **add_radius(r)** that increases the radius by **r**. This is shown in figure 3, where after applying the method to the \"orange circle object\", the radius of the object increases accordingly. The “dot” notation means to apply the method to the object, which is essentially applying a function to the information in the object.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/ClassesMethod.png\" width=\"500\" /> \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>Figure 3: Applying the method “add_radius” to the object orange circle object.</i>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"creating\">Creating a Class</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we are going to create a class circle, but first, we are going to import a library to draw the objects: \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"# Import the library\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The first step in creating your own class is to use the <code>class</code> keyword, then the name of the class as shown in Figure 4. In this course the class parent will always be object: \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/ClassesDefine.png\" width=\"400\" />\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>Figure 4: Creating a class Circle.</i>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The next step is a special method called a constructor <code>__init__</code>, which is used to initialize the object. The input are data attributes. The term <code>self</code> contains all the attributes in the set. For example the <code>self.color</code> gives the value of the attribute color and <code>self.radius</code> will give you the radius of the object. We also have the method <code>add_radius()</code> with the parameter <code>r</code>, the method adds the value of <code>r</code> to the attribute radius. To access the radius we use the syntax <code>self.radius</code>. The labeled syntax is summarized in Figure 5:\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%203/Images/ClassesCircle.png\" width=\"600\" />\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<i>Figure 5: Labeled syntax of the object circle.</i>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The actual object is shown below. We include the method <code>drawCircle</code> to display the image of a circle. We set the default radius to 3 and the default colour to blue:\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQ0AAAD4CAYAAAD2OrMWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAbcklEQVR4nO3deZhU1ZnH8e/bTUOMEDcQwYXWEQ2EBxRaXMi4a8ARjHHGgEw0PmMQRxPjmGScLATGjGQcnTiauMuDJBmNk4iCirgNixk10IY1uEGILK04YgAxE0HO/HFu201T1V3VdeueW7d+n+e5T1XXXeq91V1vn3vuvec15xwiIoWqCR2AiFQWJQ0RKYqShogURUlDRIqipCEiRekSOoDO6Nmzp6uvrw8dhkhmNTY2/q9zrleueRWZNOrr61m8eHHoMEQyy8z+kG+eDk9EpChKGiJSFCUNESmKkoaIFEVJQ0SKEkvSMLNpZrbJzFbkmW9mdquZvWFmy8xsaKt5I83s1WjedXHEIyLlE1dLYzowsp35o4D+0TQBuAPAzGqBn0TzBwLjzGxgTDGJSBnEkjSccwuAze0sch4ww3kvAvuaWR9gOPCGc26Nc+5D4MFoWRFJqaQu7joYWNfq5/XRa7lePz7XBsxsAr6VwmGHHVaeKKVwW7dCUxNs3Lj7Y1MTbN8OO3fuPtXUQJcuUFfnH7t1g169oG9f6NNn98devcAs9B5KHkkljVx/Aa6d1/d80bm7gbsBGhoaNHJQEj78EJYvh8ZGP73ySkty2L69fO9bVwe9e/skcvjhMHQoDBvmp/32K9/7SkGSShrrgUNb/XwIsBHomud1SVrbBLF4MaxY4V9P2o4dsH69nxYtgoceapl3+OE+eTQ0KJEEklTSmAVcZWYP4g8/tjjnmszsHaC/mR0ObADGAhclFJMsWQKzZ8Pjj8NvfxsmQRTr97/30y9/2fLaEUfAWWfBmDFwxhn+0EfKJpakYWYPAKcCPc1sPfB9oA7AOXcn8ARwDvAG8AFwaTRvp5ldBcwFaoFpzrmVccQkOXz4IcybB7Nm+WTx5puhI4rHmjVw111+6t69JYGcey707Bk6usyxShxYuKGhweku1wJt3gxPPOETxdy5vgOzWtTUwAkn+AQyZgwMGBA6oophZo3OuYac85Q0Mmr+fLj9dpg50/cRiO//uOIKuOgi2Guv0NGkWntJQ5eRZ8nWrfDjH8OgQXDqqb4DUQmjRWMjXHYZHHwwXHMNvPZa6IgqkpJGFixbBhMn+i/DV78KK9Ut1K733oNbboFPf9r3f8ycCR99FDqqiqGkUal27fItic9+FoYM8Z2A778fOqrK4hw88wx84QtQXw/XX+8TirRLSaMSPf44HHssfPGL8Otfh44mG9avh0mT/OnbqVPhgw9CR5RaShqV5IUX4OST/anEZctCR5NNf/wjfPvbcOSRvvW2c2foiFJHSaMSrFwJ550HJ50ECxeGjqY6NDX5fqKBA/1hYAWeZSwXJY00e/NNuPRSGDzYX2chyXv9dX8YeNxxvv9DlDRSaccOmDIFjjoKpk/3nZ4SVmOjP9Nyzjmwbl3Hy2eYkkbaLFni/6tNngx//nPoaKStOXP8dTD33hs6kmCUNNJixw6fKIYPh6VLQ0cj7dm6Fb7yFRg5sipbHUoaabB0qU8WU6boCs5KMneub3Xcd1/oSBKlpBFSc9/Fccf5wxKpPFu3+kvTq6jVoaQRyqpVvnUxebJaF1nQ3OqYMSN0JGWnpBHCY4/B8cerdZE1W7fCJZfA176W6XtZlDSSNnWqv1Br27bQkUi53HabP1zZ3N4A/ZUrrmJJ7RY8MrNvmtmSaFphZh+Z2f7RvLVmtjyal91BMv70Jxg3zl+irOsusu+ZZ3xr8ne/Cx1J/JxzJU34YfpWA0fgBwpeCgxsZ/nRwHOtfl4L9CzmPYcNG+Yqyrp1zg0b5py/GFlTNU09ejg3e3bov8CiAYudy/39i6OlUWzBo3HAAzG8b2V44QV/dqSxMXQkEsK2bf5wdOrU0JHEJo6kka8Q0h7M7JP48o2/avWyA54ys8aoIFJOZjbBzBab2eJ33nknhrATcP/9cNpp8NZboSORkHbt8oelF10E//d/oaMpWRxJo+CCR/hDk18751r3EI1wzg3F13O90sxOzrWic+5u51yDc66hV69epUWchFtugS9/WZeCS4sHHoDRoyt+rI44kka+Qki5jKXNoYlzbmP0uAmYiT/cqWxTp/oxKEXaeuYZGDWqos+exZE0FhEVPDKzrvjEsMd93Ga2D3AK8Gir1/Y2sx7Nz4GzgRUxxBTOpEm+KSqSz4IFcPbZsGVL6Eg6peSk4ZzbCTQXPFoFPOScW2lmE81sYqtFzweecs61LgLaG3jezJYCvwEed849WWpMwXz3u36cSZGOvPginHlmRSYO1T2Jyw9+AN/7XugopNKceCI89ZSvDJciqntSbjfdpIQhnfPCC37M1z/9KXQkBVPSKNXtt8M3vxk6Cqlk8+f7azkqoQA3ShqlefJJf3OSSKmefhquvDJ0FAVR0uisV1+FsWMzfTejJOzee/3NbimnpNEZf/yjr0JegT3fknL/8A/w7LOho2iXkkaxdu3yd6uqeLCUw86dcOGFsHp16EjyUtIo1re+5fsyRMpl8+ZUj7mipFGMGTPg5ptDRyHVYOVKGD8+lWOvKGkU6qWXYELem3BF4jd7diqv/1HSKMR778EFF+iOVUneDTf45JEiShqFuPpq2LAhdBRSrS6/3P/jSgkljY7Mng0//WnoKKSaNTWl6iJCJY32vPeez/Iiof3sZzBrjxEnglDSaM/VV/ssL5IGEyem4jBFSSMfHZZI2qTkMEVJIxcdlkhapeAwJaliSaea2ZZWBZMmFbpuEF/7mg5LJL0Cn00pOWmYWS3wE/xo4gOBcWY2MMeiC51zx0TTPxe5bnKeftpnc5G0euutoGO4hCiWFNe68XPO31siknbTp8OqVUHeOsliSSea2VIzm2Nmnyly3WSKJT34oCq5S2X46KNgo94nVSzpZaCfc24IcBvwSBHr+hfLXSxpx45UXucvktcjj/hRzROWSLEk59xW59z70fMngDoz61nIuom5555Uj2EgktN1yZ87SKRYkpkdZGYWPR8eve+7haybiO3bVa9EKtP8+TBnTqJvmVSxpL8GVkRFkW4FxkYV7XOuW2pMRbvlFhVplsr17W/7TvyEqFjSu+/CEUfA1q3xbE8khJ//3Felj4mKJbVn6lQlDKl83/ue78xPQHUnjW3b4K67QkchUro1a+DhhxN5q+pOGjNmwPvvh45CJB63357I21R30rjjjtARiMRnwQI/IHGZVW/SmD8/kQ9YJFEJtDaqN2kk1JQTSdRPf1r2Q+7qTBpvvQUzZ4aOQiR+27aVffCo6kwa99yT2OkpkcSVua+u+pLGRx/B3XeHjkKkfJYvh4ULy7b56ksajz0G69eHjkKkvMrY2qi+pPHQQ6EjECm/WbPKVhGwupLGzp2J3xEoEsT27fDcc2XZdHUljYULU1E3QiQRZRq1vLqSRkoqVIkkokyFo5U0RLJqwwZobIx9s0nVPRlvZsui6X/MbEireWvNbHlUDyWmQTJyWLnS3wkoUk3K8I8yqbonvwdOcc4NBq4H2l4ocVpUDyXnoB+xUCtDqlEakwYF1C5xzv2Pc665B/JF/ADCySrT8Z1Iqi1ZAuvWdbhYMZKse9Ls74DW5z0d8JSZNZrZhHwrlVT3ZNMmeOml4tYRyYqY/2EmVffEL2h2Gj5p/GOrl0c454biD2+uNLOTc61bUt2TBQtg167i1hHJinnzYt1cInVPAMxsMHAvcJ5z7t3m151zG6PHTcBM/OFOvMrQgyxSMWL++0+q7slhwMPAl5xzr7V6fW8z69H8HDgbWBFDTLtT0pBqtmZNrBc1JlX3ZBJwAHB7m1OrvYHno3oovwEed849WWpMe1DSkGr38suxbapLHBuJSi0+0ea1O1s9vwy4LMd6a4AhbV+P1dq1sHlzWd9CJPUaG+GMM2LZVPavCI2rqJJIJYvxe5D9pKFDE5FYvwdKGiLVIMbOUCUNkWoRU2dotpPG+vXqBBVptmRJLJvJdtKI+Zp7kYoW09i42U4aG/e4MFWkesX0fch20mhqCh2BSHrE9H3IdtJQS0OkhVoaBVBLQ6SFWhoFUEtDpMUHH8CWLSVvJttJQy0Nkd3F8J3IdtJQS0NkdzF8J7KbND78EN59t+PlRKqJWhrtUCU1kT3FcIV0dpPGjh2hIxBJnxi+F0kVSzIzuzWav8zMhha6bqft3BnbpkQyI4bvRVLFkkYB/aNpAnBHEet2jloaIntKSUujw2JJ0c8znPcisK+Z9Slw3c5RS0NkT2loaVBYsaR8yxRcaKmkYkki4rmcJYmKklSxpHzLFFxoqehiSV1iGTNZJFvq6kreRBzfrEKKJeVbpmsB63aOkobInmL4XiRSLCn6+eLoLMoJwBbnXFOB63aOkobInmL4XpS8BefcTjNrLpZUC0xrLpYUzb8TXxPlHOAN4APg0vbWLTUmIJZmmEjmpOTwpJBiSQ64stB1Y7HPPrFvUqTixfC9yO4VoXvtpcQh0lafPiVvIrtJA6Bv39ARiKRLDN+JbCeNGLKqSKaopdEBtTREWnTrBgccUPJmsp001NIQaXHQQbFsJttJQy0NkRYxfR+ynTTU0hBpEdP3IdtJQy0NkRZqaRTg4Jw3zIpUJyWNAtTXQ/fuoaMQSYfBg2PZTLaTRk0NHHts6ChE0mHYsFg2k+2kAbF9UCIVrW9fnXItmJKGSKzfAyUNkWqgpFGEo49WZ6iIkkYR1BkqAg0NsW2qpKRhZvub2dNm9nr0uF+OZQ41s/82s1VmttLMrm41b7KZbTCzJdF0Tinx5KVDFKlmMXaCQuktjeuAZ51z/YFno5/b2glc65wbAJwAXNmmINKPnHPHRFP8I3iBkoZUt5j//ktNGucB90fP7wc+33YB51yTc+7l6Pk2YBV5apuUzWc/m+jbiaRKzH//pSaN3tGo4kSPB7a3sJnVA8cCL7V6+aqovuu0XIc3rdbtfLGk+noYNKi4dUSyYvToWDfXYdIws2fMbEWOqajyiWbWHfgV8HXn3Nbo5TuAvwCOAZqAm/OtX3SxpLbGjCl+HZFK178/DBgQ6yY7HI3cOXdmvnlm9raZ9XHONUW1WTflWa4OnzB+7px7uNW23261zD3AY8UEX5QxY+CGG8q2eZFUirmVAaUfnswCLomeXwI82nYBMzPgPmCVc+7f28xrfYP/+cCKEuPJb/jwWHuQRSpCGVrYpSaNHwJnmdnrwFnRz5hZXzNrPhMyAvgScHqOU6s3mtlyM1sGnAZcU2I8+ZnBueeWbfMiqbP//mU5CVBSsSTn3LvAGTle34ivqIZz7nlyF3rGOfelUt6/aKNHw733JvqWIsGMGgW1tbFvNvtXhLZ21lm+iJJINShT5391JY299oIz8/brimRH164wcmRZNl1dSQPgggtCRyBSfmeeCZ/6VFk2XX1J48ILYb+815CJZMPll5dt09WXNPbaC7785dBRiJRPv35lPVNYfUkD4Ior/ClYkSyaMMEPCVEm1Zk0+vdXh6hkU9eucNllZX2L6kwaAH//96EjEInfBRfAge3eN1qy6k0ao0fDoYeGjkIkXgn8M6zepFFb64/9RLJi8OBExo6p3qQB8JWvQF1d6ChE4nHFFYm8TXUnjd69Ydy40FGIlK5nT/jbv03krao7aQBMmeJ7nEUq2Xe+k1ipDiWN+nqYODF0FCKd169fYocmoKThffe7KqgklWvKFOjWLbG3K3vdk2i5tdFgO0vMbHGx65ddr15w7bVB3lqkJIMGwZeSHZYmibonzU6Lapu0LvVUzPrlde21PnmIVJIbbijrJeO5lL3uSZnXj0+PHr4zSaRSjBhRloGDO5JU3RMHPGVmjWbW+oqqguumlFT3pFBXXOE7RkUqwQ9/GORtk6p7MsI5NxQYhS/LeHKxgZZc96QQXbvC9deXZ9sicTr33GCVAztMGs65M51zg3JMjwJvN5chaK/uSTTQMM65TcBMYHg0q6D1EzV+PJx+eugoRPLr3h1uuy3Y2ydR92RvM+vR/Bw4m5b6Jh2unzgzuO8+nYKV9LrxxqCH0UnUPekNPG9mS4HfAI87555sb/3g6uv9L0YkbU4/PfjFiOacCxpAZzQ0NLjFixd3vGApnPMD9Tz3XHnfR6RQ3bvD8uWJtDLMrLHN5REf0xWh+egwRdIm8GFJMyWN9tTXw7/9W+goRFJxWNJMSaMjl18OZ+xReVIkOd27+1ZvSgbDVtLoSPNhSo8eoSORapWSw5JmShqF6NcPpk9PTaaXKjJuXKK3vRdCSaNQX/gCfP/7oaOQajJsmG/lpoySRjEmTVItWEnGQQfBI4/4ioApo6RRDDO4/34YMiR0JJJl3brBzJlwyCGhI8lJSaNYe+8Njz6qsTekfO68E044IXQUeSlpdEa/fvCrX6n8gcTvmmtSX6BcSaOz/vIv4cc/Dh2FZMnZZ1fExYRKGqWYMMH/ZxAp1Wc+A7/4ha/8l3JKGqW6+WZfqU2ks446Cp59FvbdN3QkBVHSKJWZ77i6+OLQkUglOuIIfyd1796hIymYkkYcampg2jT44hdDRyKV5NBDfcI4+ODQkRRFSSMutbXws5+pNqwUpr4e5s/3Z+IqTNmLJZnZ0VGRpOZpq5l9PZo32cw2tJp3TinxBNeli08cKT9lJoEdeSQsWACHHx46kk4pe7Ek59yrUZGkY4BhwAf4wYWb/ah5vnPuibbrV5zmQ5XLLw8diaTRgAE+YRx6aOhIOi3pYklnAKudc38o8X3Trblz9LpwBeMkhY4/HubNgz59QkdSkqSKJTUbCzzQ5rWrzGyZmU1rr5ZrIsWS4jZ1qj9c+cQnQkcioV18se/DOLCjr0j6JVUsCTPrCowB/qvVy3cAfwEcAzQBN+dbP5FiSeUwfrxvjlZYD7nEpLYWbrrJ3+iYYGX3curS0QLOuTPzzTOzt82sj3OuqYBiR6OAl51zb7fa9sfPzewe4LHCwq4wxx0HixbB+efDSy+FjkaSsu++8OCD8LnPhY4kVmUvltTKONocmjRXV4ucT0sRpezp08c3T3URWHU4+mj/DyJjCQOSKZaEmX0ymv9wm/VvNLPlZrYMOA3I9o0c3br5ZupNN1XEPQbSSSNH+oRx1FGhIykLFUsKZe5c3+rYFL58rcSkpga+9S34l3/xzyuYiiWl0ec+BytX6tLzrDj6aHj+eX/GrMITRkeyvXdp17On7yj75S8zcSquKtXUwLXXwpIlcOKJoaNJhJJGGlxwgVodlai5dXHTTVV1LY6SRlqo1VE5qrB10ZqSRtqo1ZFuRx0FCxdWXeuiNSWNNGpudcybl+pRqavKgQfCrbfC8uVw0kmhowlKSSPNTjkFXnjB18AYMCB0NNWpRw+YMgVWr4avfhW6dg0dUXBKGpXg85/3/+GmTavoW6orSrdu8PWvw5o1vrJe9+6hI0oNJY1KUVsLl14Kr73mj6cPOCB0RNlUUwOXXAKvvgo/+pE/VJTdKGlUmk98wvfcr14Nkyf7mp9Suq5d/VCNS5fC9OkVOQxfUpQ0KtU++/gq9m++6etlnHJK6IgqU79+cMMNsG4d/Od/wqBBoSNKPSWNSldXBxde6M+0rFwJV14Jn/pU6KjSzczfVDZrlu+z+Kd/0rUxRVDSyJKBA32pyA0b4I47YPDg0BGlywEHwDe+Aa+/DnPmwOjRmb9PpBx0l2vWLVrkq9zPmuXPwFSbXr3gr/4KxoyBUaOq9oKsYrV3l6uSRjVZu9Ynj1mz/BCEO3aEjqg8BgzwSWLMGH9xnFoTRVPSkD1t2eKb6LNn+8f33gsdUed16QIjRrQkiiOPDB1RxWsvaXQ4RmgHG/4bYDIwABjunMv5TTazkcB/ALXAvc655hG+9gd+AdQDa4ELnXMV/NdbQfbZB8aO9dOuXf76j8bGlum3v4Vt20JHuafaWt+SaGiAYcP8NGQIfPKToSOrGiW1NMxsALALuAv4Rq6kYWa1wGv44f7WA4uAcc6535nZjcBm59wPzew6YD/n3D929L5qaSQgVyJ55RV45x1IqnXao4cvX9icHJQgElO2loZzblX0Bu0tNhx4wzm3Jlr2QXyRpd9Fj6dGy90PzAM6TBqSgJoa+PSn/TR+fMvrO3bA22/Dxo3Q1LTnY1MTbN8OO3fuPtXU+MOIujr/2LWrP83Zt68fdDnX4957h9t/yaukpFGgg4F1rX5eDxwfPd+t2JKZ5T1ZbmYTgAkAhx12WJlClQ7V1cEhh/hJqlKHScPMngFyXav8HedceyULPt5EjteKbt865+4G7gZ/eFLs+iISj5KKJRVoPdD61sxDgI3R82KKLYlICiRxAnsR0N/MDo9KM47FF1mC4ootiUgKlJQ0zOx8M1sPnAg8bmZzo9c/LpbknNsJXAXMBVYBDznnVkabyFlsSUTSSxd3icgeVCxJRGKjpCEiRVHSEJGiKGmISFEqsiPUzN4B/lDAoj2B/y1zOOWWhX2AbOxHFvYBCtuPfs65XrlmVGTSKJSZLc7XA1wpsrAPkI39yMI+QOn7ocMTESmKkoaIFCXrSePu0AHEIAv7ANnYjyzsA5S4H5nu0xCR+GW9pSEiMVPSEJGiZCppmNnfmNlKM9tlZnlPKZnZSDN71czeiMYmTQ0z29/Mnjaz16PH/fIst9bMlpvZEjNLxd17HX2u5t0azV9mZkNDxNmRAvbjVDPbEn32S8xsUog422Nm08xsk5mtyDO/878L51xmJvyo6EfjxxptyLNMLbAaOALoCiwFBoaOvVV8NwLXRc+vA/41z3JrgZ6h4y3mcwXOAebgR3M7AXgpdNyd3I9TgcdCx9rBfpwMDAVW5Jnf6d9FploazrlVzrlXO1js44GOnXMfAs0DHafFefhBlokePx8ulKIU8rmeB8xw3ovAvtGIbWmS9r+PgjjnFgCb21mk07+LTCWNAuUa6PjgQLHksttgy0C+wZYd8JSZNUaDLodWyOea9s8eCo/xRDNbamZzzOwzyYQWq07/LpIYjTxWaRnouBTt7UMRmxnhnNsYjeD+tJm9Ev13CaWQzzX4Z1+AQmJ8GX9vxvtmdg7wCNC/3IHFrNO/i4pLGq68Ax0nor19MLOCBlt2zm2MHjeZ2Ux8szpk0ijkcw3+2Regwxidc1tbPX/CzG43s57OuUq6ma3Tv4tqPDxpb6DjNOhwsGUz29vMejQ/B84GcvaSJ6iQz3UWcHHUc38CsKX5UCxFOtwPMzvIogphZjYc/z16N/FIS9P530XoXt6Ye4zPx2fQPwNvA3Oj1/sCT7TpOX4N30v+ndBxt9mHA4Bngdejx/3b7gO+Z39pNK1Myz7k+lyBicDE6LkBP4nmLyfPGa7QUwH7cVX0uS8FXgROCh1zjn14AGgCdkTfib+L63ehy8hFpCjVeHgiIiVQ0hCRoihpiEhRlDREpChKGiJSFCUNESmKkoaIFOX/AedMnxceoiKeAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Create a class Circle\n",
"\n",
"class Circle(object):\n",
" \n",
" # Constructor\n",
" def __init__(self, radius=3, color='blue'):\n",
" self.radius = radius\n",
" self.color = color \n",
" \n",
" # Method\n",
" def add_radius(self, r):\n",
" self.radius = self.radius + r\n",
" return(self.radius)\n",
" \n",
" # Method\n",
" def drawCircle(self):\n",
" plt.gca().add_patch(plt.Circle((0, 0), radius=self.radius, fc=self.color))\n",
" plt.axis('scaled')\n",
" plt.show() "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"circle\">Creating an instance of a class Circle</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let’s create the object <code>RedCircle</code> of type Circle to do the following:\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Create an object RedCircle\n",
"\n",
"RedCircle = Circle(10, 'red')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the <code>dir</code> command to get a list of the object's methods. Many of them are default Python methods.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['__class__',\n",
" '__delattr__',\n",
" '__dict__',\n",
" '__dir__',\n",
" '__doc__',\n",
" '__eq__',\n",
" '__format__',\n",
" '__ge__',\n",
" '__getattribute__',\n",
" '__gt__',\n",
" '__hash__',\n",
" '__init__',\n",
" '__init_subclass__',\n",
" '__le__',\n",
" '__lt__',\n",
" '__module__',\n",
" '__ne__',\n",
" '__new__',\n",
" '__reduce__',\n",
" '__reduce_ex__',\n",
" '__repr__',\n",
" '__setattr__',\n",
" '__sizeof__',\n",
" '__str__',\n",
" '__subclasshook__',\n",
" '__weakref__',\n",
" 'add_radius',\n",
" 'color',\n",
" 'drawCircle',\n",
" 'radius']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find out the methods can be used on the object RedCircle\n",
"\n",
"dir(RedCircle)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can look at the data attributes of the object: \n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the object attribute radius\n",
"\n",
"RedCircle.radius"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'red'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the object attribute color\n",
"\n",
"RedCircle.color"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can change the object's data attributes: \n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Set the object attribute radius\n",
"\n",
"RedCircle.radius = 1\n",
"RedCircle.radius"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can draw the object by using the method <code>drawCircle()</code>:\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Call the method drawCircle\n",
"# Create a class Circle\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline \n",
"\n",
"class Circle(object):\n",
" \n",
" # Constructor\n",
" def __init__(self, radius=3, color='blue'):\n",
" self.radius = radius\n",
" self.color = color \n",
" \n",
" # Method\n",
" def add_radius(self, r):\n",
" self.radius = self.radius + r\n",
" return(self.radius)\n",
" \n",
" # Method\n",
" def drawCircle(self):\n",
" plt.gca().add_patch(plt.Circle((0, 0), radius=self.radius, fc=self.color))\n",
" plt.axis('scaled')\n",
" plt.show() \n",
"Circle(30,\"green\").drawCircle()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can increase the radius of the circle by applying the method <code>add_radius()</code>. Let increases the radius by 2 and then by 5: \n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Radius of object: 1\n",
"Radius of object of after applying the method add_radius(2): 3\n",
"Radius of object of after applying the method add_radius(5): 8\n"
]
}
],
"source": [
"# Use method to change the object attribute radius\n",
"\n",
"print('Radius of object:',RedCircle.radius)\n",
"RedCircle.add_radius(2)\n",
"print('Radius of object of after applying the method add_radius(2):',RedCircle.radius)\n",
"RedCircle.add_radius(5)\n",
"print('Radius of object of after applying the method add_radius(5):',RedCircle.radius)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let’s create a blue circle. As the default colour is blue, all we have to do is specify what the radius is:\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"# Create a blue circle with a given radius\n",
"\n",
"BlueCircle = Circle(radius=100)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" As before we can access the attributes of the instance of the class by using the dot notation:\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"100"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the object attribute radius\n",
"\n",
"BlueCircle.radius"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'blue'"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the object attribute color\n",
"\n",
"BlueCircle.color"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can draw the object by using the method <code>drawCircle()</code>:\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Call the method drawCircle\n",
"\n",
"BlueCircle.drawCircle()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compare the x and y axis of the figure to the figure for <code>RedCircle</code>; they are different.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"rect\">The Rectangle Class</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's create a class rectangle with the attributes of height, width and color. We will only add the method to draw the rectangle object:\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"# Create a new Rectangle class for creating a rectangle object\n",
"\n",
"class Rectangle(object):\n",
" \n",
" # Constructor\n",
" def __init__(self, width=2, height=3, color='r'):\n",
" self.height = height \n",
" self.width = width\n",
" self.color = color\n",
" \n",
" # Method\n",
" def drawRectangle(self):\n",
" plt.gca().add_patch(plt.Rectangle((0, 0), self.width, self.height ,fc=self.color))\n",
" plt.axis('scaled')\n",
" plt.show()\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let’s create the object <code>SkinnyBlueRectangle</code> of type Rectangle. Its width will be 2 and height will be 3, and the color will be blue:\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# Create a new object rectangle\n",
"\n",
"SkinnyBlueRectangle = Rectangle(2, 10, 'blue')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" As before we can access the attributes of the instance of the class by using the dot notation:\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the object attribute height\n",
"\n",
"SkinnyBlueRectangle.height "
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the object attribute width\n",
"\n",
"SkinnyBlueRectangle.width"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'blue'"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the object attribute color\n",
"\n",
"SkinnyBlueRectangle.color"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can draw the object:\n"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Use the drawRectangle method to draw the shape\n",
"\n",
"SkinnyBlueRectangle.drawRectangle()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let’s create the object <code>FatYellowRectangle</code> of type Rectangle :\n"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"# Create a new object rectangle\n",
"\n",
"FatYellowRectangle = Rectangle(20, 5, 'yellow')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can access the attributes of the instance of the class by using the dot notation:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Print the object attribute height\n",
"\n",
"FatYellowRectangle.height "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Print the object attribute width\n",
"\n",
"FatYellowRectangle.width"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Print the object attribute color\n",
"\n",
"FatYellowRectangle.color"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can draw the object:\n"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Use the drawRectangle method to draw the shape\n",
"\n",
"FatYellowRectangle.drawRectangle()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"rect\">Exercises</h2>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4> Text Analysis </h4>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You have been recruited by your friend, a linguistics enthusiast, to create a utility tool that can perform analysis on a given piece of text. Complete the class\n",
"'analysedText' with the following methods -\n",
"\n",
"<ul>\n",
" <li> Constructor - Takes argument 'text',makes it lower case and removes all punctuation. Assume only the following punctuation is used - period (.), exclamation mark (!), comma (,) and question mark (?). Store the argument in \"fmtText\" \n",
" <li> freqAll - returns a dictionary of all unique words in the text along with the number of their occurences.\n",
" <li> freqOf - returns the frequency of the word passed in argument.\n",
"</ul>\n",
" The skeleton code has been given to you. Docstrings can be ignored for the purpose of the exercise. <br>\n",
" <i> Hint: Some useful functions are <code>replace()</code>, <code>lower()</code>, <code>split()</code>, <code>count()</code> </i><br>\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<__main__.analysedText at 0x7f617478e908>"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import sys\n",
"class analysedText(object):\n",
"\n",
" def __init__ (self, text):\n",
" formattedText = text.replace(',','').replace('!','').replace('?','').replace('.','')\n",
" formattedText = formattedText.lower()\n",
" self.fmtText = formattedText\n",
" \n",
" def freqAll(self): \n",
" uniqWords = text.split('.,!?')\n",
" countWords = uniqWords.count()\n",
" \n",
" def freqOf(self,word):\n",
" pass\n",
"\n",
"Reply = analysedText('This is,really?I think!Yes.')\n",
"Reply"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Execute the block below to check your progress.\n"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Constructor: \n",
"Error detected. Recheck your function \n",
"freqAll: \n",
"Error detected. Recheck your function \n",
"freqOf: \n",
"Test Failed\n"
]
}
],
"source": [
"import sys\n",
"\n",
"sampleMap = {'eirmod': 1,'sed': 1, 'amet': 2, 'diam': 5, 'consetetur': 1, 'labore': 1, 'tempor': 1, 'dolor': 1, 'magna': 2, 'et': 3, 'nonumy': 1, 'ipsum': 1, 'lorem': 2}\n",
"\n",
"def testMsg(passed):\n",
" if passed:\n",
" return 'Test Passed'\n",
" else :\n",
" return 'Test Failed'\n",
"\n",
"print(\"Constructor: \")\n",
"try:\n",
" samplePassage = analysedText(\"Lorem ipsum dolor! diam amet, consetetur Lorem magna. sed diam nonumy eirmod tempor. diam et labore? et diam magna. et diam amet.\")\n",
" print(testMsg(samplePassage.fmtText == \"lorem ipsum dolor diam amet consetetur lorem magna sed diam nonumy eirmod tempor diam et labore et diam magna et diam amet\"))\n",
"except:\n",
" print(\"Error detected. Recheck your function \" )\n",
"print(\"freqAll: \")\n",
"try:\n",
" wordMap = samplePassage.freqAll()\n",
" print(testMsg(wordMap==sampleMap))\n",
"except:\n",
" print(\"Error detected. Recheck your function \" )\n",
"print(\"freqOf: \")\n",
"try:\n",
" passed = True\n",
" for word in sampleMap:\n",
" if samplePassage.freqOf(word) != sampleMap[word]:\n",
" passed = False\n",
" break\n",
" print(testMsg(passed))\n",
" \n",
"except:\n",
" print(\"Error detected. Recheck your function \" )\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details><summary>Click here for the solution</summary>\n",
"\n",
"```python\n",
"class analysedText(object):\n",
" \n",
" def __init__ (self, text):\n",
" # remove punctuation\n",
" formattedText = text.replace('.','').replace('!','').replace('?','').replace(',','')\n",
" \n",
" # make text lowercase\n",
" formattedText = formattedText.lower()\n",
" \n",
" self.fmtText = formattedText\n",
" \n",
" def freqAll(self): \n",
" # split text into words\n",
" wordList = self.fmtText.split(' ')\n",
" \n",
" # Create dictionary\n",
" freqMap = {}\n",
" for word in set(wordList): # use set to remove duplicates in list\n",
" freqMap[word] = wordList.count(word)\n",
" \n",
" return freqMap\n",
" \n",
" def freqOf(self,word):\n",
" # get frequency map\n",
" freqDict = self.freqAll()\n",
" \n",
" if word in freqDict:\n",
" return freqDict[word]\n",
" else:\n",
" return 0\n",
" \n",
"```\n",
"\n",
"</details>\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<__main__.analysedText at 0x7f61747bc1d0>"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<h2>The last exercise!</h2>\n",
"<p>Congratulations, you have completed your first lesson and hands-on lab in Python. However, there is one more thing you need to do. The Data Science community encourages sharing work. The best way to share and showcase your work is to share it on GitHub. By sharing your notebook on GitHub you are not only building your reputation with fellow data scientists, but you can also show it off when applying for a job. Even though this was your first piece of work, it is never too early to start building good habits. So, please read and follow <a href=\"https://cognitiveclass.ai/blog/data-scientists-stand-out-by-sharing-your-notebooks/\" target=\"_blank\">this article</a> to learn how to share your work.\n",
"<hr>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Author\n",
"\n",
"<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n",
"\n",
"## Other contributors\n",
"\n",
"<a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a>\n",
"\n",
"## Change Log\n",
"\n",
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n",
"| ----------------- | ------- | ---------- | ---------------------------------- |\n",
"| 2020-08-26 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n",
"| | | | |\n",
"| | | | |\n",
"\n",
"<hr/>\n",
"\n",
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.6.12"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment