From 7b610dff0277bf556c405937f9b5cb64294d21dd Mon Sep 17 00:00:00 2001 From: DomLakutis Date: Tue, 26 Sep 2017 13:15:58 +0000 Subject: [PATCH 1/3] finished the tasks --- .ipynb_checkpoints/Functions-checkpoint.ipynb | 381 ++++++++++++++++++ Functions.ipynb | 157 +++++--- 2 files changed, 481 insertions(+), 57 deletions(-) create mode 100644 .ipynb_checkpoints/Functions-checkpoint.ipynb diff --git a/.ipynb_checkpoints/Functions-checkpoint.ipynb b/.ipynb_checkpoints/Functions-checkpoint.ipynb new file mode 100644 index 0000000..c129866 --- /dev/null +++ b/.ipynb_checkpoints/Functions-checkpoint.ipynb @@ -0,0 +1,381 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Functions in Python\n", + "\n", + "Functions are \"self contained\" sections of code that accomplish a specific task. Its like a recipe. \n", + "\n", + "In python the keyword that starts a function is\n", + "\n", + "```python \n", + " def function_name(dataIn):\n", + "```\n", + "\n", + "Functions usually \"take in\" data, process it, and \"return\" a result. In python this looks like:\n", + "```python\n", + " def function_name(dataIn):\n", + " \n", + " #do stuff with the data to get a result\n", + " \n", + " return result\n", + "```\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once a function is written, it can be used over and over and over again. \n", + "\n", + "Functions must be \"called\" with actual data in order to be executed. Back to the recipe analogy - a recipe is not the cake, you actually have to follow the recipe with actual ingredients to end up with a resulting cake!\n", + "\n", + "```python\n", + "result = function_name(3) # the data taken in is the number 3\n", + "answer = function_name(78) # the data taken in is the number 78\n", + "start=77\n", + "final = function_name(start) # the data taken in is the value of the variable start \n", + "```\n", + "\n", + "[Read more about functions here](http://www.cs.utah.edu/~germain/PPS/Topics/functions.html)\n", + "\n", + "remember to make you own notes as you learn new things." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Task - write a library of maths functions\n", + "\n", + "1. add - takes 2 parameters: the two numbers to add, returns the sum\n", + "\n", + "2. subtract - takes 2 parameters: the two numbers to subtract, returns the difference\n", + "\n", + "3. floorDivide - takes 2 parameters: the two numbers to divide, returns the whole quotient\n", + "\n", + "4. divide - takes 2 parameters: the two numbers to divide, returns the quotient (as a decimal)\n", + "\n", + "4. multiply - takes 2 parameters: the two numbers to multiply, returns the product\n", + "\n", + "5. getRemainder - takes 2 parameters: the two numbers to divide, returns the remainder\n", + "\n", + "6. power takes 2 parameters: the two numbers one is the base the other the power, returns base ^ power\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## function definitions\n", + "\n", + "In the next cell we are defining the function and the input values (called parameters). These input values are simply placeholders for actual values that will be used when calling the function. In the cake analogy, the egg in a recipe does not exisit until you actually make a cake. Then you need to use a real egg." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "#this function adds two numbers passed as parameters\n", + "def add (number1, number2):\n", + " answer = number1+number2\n", + " return answer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## calling functions\n", + "\n", + "In the cells below we are CALLING the function with actual values (ARGUMENTS)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "add(4,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-11" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "add(-6,-5)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14.6" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "add(5.6, 9)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'helloworld'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "add (\"hello\", \"world\") # ooops this is weird!!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testing code with asserts\n", + "\n", + "The assert statement exists in almost every programming language. When you do...\n", + "\n", + "\n", + "```python\n", + "assert \n", + "```\n", + "\n", + "you're telling the program to test that condition, and trigger an error if the condition is false.\n", + "\n", + "Here is a simple example;\n", + "```python\n", + "assert 2 + 2 == 5, \"Houston we've got a problem\"\n", + "```\n", + "\n", + "Since 2+2 doed **NOT** equal 5, this code will print out the message \"Houston we've got a problem\" - you can test it out below\n", + "\n", + "[Much more on testing here](http://docs.python-guide.org/en/latest/writing/tests/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## test the assert code below and fix it so that it doesn't throw an AssertionError" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "Houston we've got a problem", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Houston we've got a problem\"\u001b[0m \u001b[0;31m#This will give an AssertionError\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m: Houston we've got a problem" + ] + } + ], + "source": [ + "assert 2 + 2 == 5, \"Houston we've got a problem\" #This will give an AssertionError\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "assert 2 + 2 == 4, \"Houston we've got a problem\" #this won't give an error!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Task: Write the function definitions \n", + "\n", + "subtract - takes 2 parameters: the two numbers to subtract, returns the difference\n", + "\n", + "floorDivide - takes 2 parameters: the two numbers to divide, returns the whole quotient\n", + "\n", + "divide - takes 2 parameters: the two numbers to divide, returns the quotient (as a decimal)\n", + "\n", + "multiply - takes 2 parameters: the two numbers to multiply, returns the product\n", + "\n", + "getRemainder - takes 2 parameters: the two numbers to divide, returns the remainder\n", + "\n", + "power - takes 2 parameters: the two numbers one is the base the other the power, returns base ^ power\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# subtract function \n", + "def subtract(num1 , num2):\n", + " return num1 - num2;\n", + "# floorDivide function\n", + "def floorDivide (num1 , num2):\n", + " return num1 // num2;\n", + "# divide function\n", + "def divide (num1 , num2):\n", + " return num1 / num2;\n", + "# multiply function\n", + "def multiply (num1 , num2):\n", + " return num1 * num2;\n", + "# getRemainder function\n", + "def getRemainder (num1 , num2):\n", + " return num1 % num2;\n", + "# power function\n", + "def power (num1 , num2):\n", + " return num1 ** num2;" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Task: Test the code you have written using the following asserts\n", + "\n", + "To test your code with all these asserts go to **Kernel** (on the menu) and choose **restart and run all**" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "assert add(4,5)==9, \"add function not working\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "assert subtract(4,5)==-1, \"subtract function not working\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "assert multiply(4,5)==20, \"multiply function not working\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "assert divide(5,5)==1.0, \"divide function not working\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "assert floorDivide(1,2)==0.0, \"floor divide function not working\"" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "assert getRemainder(5,4)==1, \"getRemainder function not working\"" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "assert power(3,2)==9, \"power function not working\"" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Functions.ipynb b/Functions.ipynb index df58b4c..c129866 100644 --- a/Functions.ipynb +++ b/Functions.ipynb @@ -78,10 +78,8 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 4, + "metadata": {}, "outputs": [], "source": [ "#this function adds two numbers passed as parameters\n", @@ -101,36 +99,80 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "add(4,5)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "-11" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "add(-6,-5)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "14.6" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "add(5.6, 9)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'helloworld'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "add (\"hello\", \"world\") # ooops this is weird!!" ] @@ -169,19 +211,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "AssertionError", + "evalue": "Houston we've got a problem", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Houston we've got a problem\"\u001b[0m \u001b[0;31m#This will give an AssertionError\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m: Houston we've got a problem" + ] + } + ], "source": [ "assert 2 + 2 == 5, \"Houston we've got a problem\" #This will give an AssertionError\n" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ "assert 2 + 2 == 4, \"Houston we've got a problem\" #this won't give an error!" @@ -208,23 +260,28 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ "# subtract function \n", - "\n", + "def subtract(num1 , num2):\n", + " return num1 - num2;\n", "# floorDivide function\n", - "\n", + "def floorDivide (num1 , num2):\n", + " return num1 // num2;\n", "# divide function\n", - "\n", + "def divide (num1 , num2):\n", + " return num1 / num2;\n", "# multiply function\n", - "\n", + "def multiply (num1 , num2):\n", + " return num1 * num2;\n", "# getRemainder function\n", - "\n", - "# power function" + "def getRemainder (num1 , num2):\n", + " return num1 % num2;\n", + "# power function\n", + "def power (num1 , num2):\n", + " return num1 ** num2;" ] }, { @@ -238,10 +295,8 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 5, + "metadata": {}, "outputs": [], "source": [ "assert add(4,5)==9, \"add function not working\"" @@ -249,10 +304,8 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 6, + "metadata": {}, "outputs": [], "source": [ "assert subtract(4,5)==-1, \"subtract function not working\"" @@ -260,10 +313,8 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 7, + "metadata": {}, "outputs": [], "source": [ "assert multiply(4,5)==20, \"multiply function not working\"" @@ -271,10 +322,8 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 8, + "metadata": {}, "outputs": [], "source": [ "assert divide(5,5)==1.0, \"divide function not working\"" @@ -282,21 +331,17 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 12, + "metadata": {}, "outputs": [], "source": [ - "assert floorDivide(1,2)==0.5, \"floor divide function not working\"" + "assert floorDivide(1,2)==0.0, \"floor divide function not working\"" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 10, + "metadata": {}, "outputs": [], "source": [ "assert getRemainder(5,4)==1, \"getRemainder function not working\"" @@ -304,10 +349,8 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 11, + "metadata": {}, "outputs": [], "source": [ "assert power(3,2)==9, \"power function not working\"" From 9a31347a6f933db36fd27fddceb37f0bc86b0e8c Mon Sep 17 00:00:00 2001 From: DomLakutis Date: Tue, 26 Sep 2017 13:25:57 +0000 Subject: [PATCH 2/3] fixed the Travis error --- .ipynb_checkpoints/Functions-checkpoint.ipynb | 16 ++-------------- Functions.ipynb | 16 ++-------------- cs-python-functions | 1 + 3 files changed, 5 insertions(+), 28 deletions(-) create mode 160000 cs-python-functions diff --git a/.ipynb_checkpoints/Functions-checkpoint.ipynb b/.ipynb_checkpoints/Functions-checkpoint.ipynb index c129866..09f4b7d 100644 --- a/.ipynb_checkpoints/Functions-checkpoint.ipynb +++ b/.ipynb_checkpoints/Functions-checkpoint.ipynb @@ -213,21 +213,9 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "ename": "AssertionError", - "evalue": "Houston we've got a problem", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Houston we've got a problem\"\u001b[0m \u001b[0;31m#This will give an AssertionError\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mAssertionError\u001b[0m: Houston we've got a problem" - ] - } - ], + "outputs": [], "source": [ - "assert 2 + 2 == 5, \"Houston we've got a problem\" #This will give an AssertionError\n" + "assert 2 + 2 == 4, \"Houston we've got a problem\" #This will give an AssertionError\n" ] }, { diff --git a/Functions.ipynb b/Functions.ipynb index c129866..09f4b7d 100644 --- a/Functions.ipynb +++ b/Functions.ipynb @@ -213,21 +213,9 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "ename": "AssertionError", - "evalue": "Houston we've got a problem", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Houston we've got a problem\"\u001b[0m \u001b[0;31m#This will give an AssertionError\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mAssertionError\u001b[0m: Houston we've got a problem" - ] - } - ], + "outputs": [], "source": [ - "assert 2 + 2 == 5, \"Houston we've got a problem\" #This will give an AssertionError\n" + "assert 2 + 2 == 4, \"Houston we've got a problem\" #This will give an AssertionError\n" ] }, { diff --git a/cs-python-functions b/cs-python-functions new file mode 160000 index 0000000..7b610df --- /dev/null +++ b/cs-python-functions @@ -0,0 +1 @@ +Subproject commit 7b610dff0277bf556c405937f9b5cb64294d21dd From 0f283fc6163bea3dde0c563374158e77d33e0985 Mon Sep 17 00:00:00 2001 From: DomLakutis Date: Tue, 26 Sep 2017 13:30:22 +0000 Subject: [PATCH 3/3] fixed yet another issue with travis --- cs-python-functions | 1 - 1 file changed, 1 deletion(-) delete mode 160000 cs-python-functions diff --git a/cs-python-functions b/cs-python-functions deleted file mode 160000 index 7b610df..0000000 --- a/cs-python-functions +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7b610dff0277bf556c405937f9b5cb64294d21dd