{
 "metadata": {
  "name": "",
  "signature": "sha256:63dae7729725476213c038c75f708a0afd5386cd85264fbfba4fc7a16437b94f"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Chapter 6: Functions"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 1 page 217"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def power(x,n):                                 #Function header\n",
      "    # Function body starts here....\n",
      "    result=1.0                                  #declaration of variable result    \n",
      "    for i in range(1,n+1,1):\n",
      "        result*=x                               #computing X to power n\n",
      "    return result                               #returning result\n",
      "#Function body ends here....\n",
      "\n",
      "print \"result=%f\" % (power(2,2))                #function call\n",
      "print \"result=%f\" % (power(3,3))                #function call"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "result=4.000000\n",
        "result=27.000000\n"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 2 page 218"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def FtoC(faren):                                #Function header\n",
      "    # Function body starts here....\n",
      "    factor =5.0/9.0\n",
      "    freezing=32.0 \n",
      "    celcius=factor*(faren-freezing)             #computing temp in celcius\n",
      "    return celcius                              #returning result\n",
      "#Function body ends here....\n",
      "\n",
      "print \"result=%f\" % (FtoC(32.0))                #function call"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "result=0.000000\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 3 page 218"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#prototype not present in Python def sum_(a,b);\n",
      "def main():\n",
      "    a=5\n",
      "    b=10\n",
      "    print \"sum=%d\" % (sum_(a,b))\n",
      "    return\n",
      "#Main ends here....\n",
      "\n",
      "def sum_(x,y):\n",
      "# Function body starts here....\n",
      "    return x+y                     #returning result\n",
      "#Function body ends here....\n",
      "main()                             #Calling main function"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "sum=15\n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 4 page 219"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def leap_yr(yr):                                #Function Defination\n",
      "# Function body starts here....\n",
      "    if((yr%4==0) and (yr%100!=0) or yr%400==0):\n",
      "        return 1                                #returning result\n",
      "    else:\n",
      "        return 0                                #returning result\n",
      "#Function body ends here.... \n",
      "print leap_yr(2016)                                   #Calling function"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 5 page 220"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def main():                                     #main starts here\n",
      "    print \"Temperature in Fahrenheit scale: \"\n",
      "    tempInF=eval(raw_input())\n",
      "    tempInC=FtoC(tempInF)                                              #function FtoC() called from In[2]\n",
      "    print \"%f Fahrenheit equals %f Celcius \\n \" % (tempInF,tempInC)\n",
      "    return\n",
      "                                                #main ends here\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Temperature in Fahrenheit scale: \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "32\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "32.000000 Fahrenheit equals 0.000000 Celcius \n",
        " \n"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 6 page 221"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#main starts here\n",
      "def main():                              \n",
      "    num=3\n",
      "    print \"\\n num = %d before function call.\" % (num)       #taking input from user\n",
      "    result=mul_by_10(num)                                   #function call\n",
      "    print \"\\n result = %d, after return from function.\" % (result)   #Displaying result\n",
      "    print \"\\n num = %d\" % (num)\n",
      "    return\n",
      "#main ends here\n",
      "def mul_by_10(num):       #Function header\n",
      "    num*=10;              #Function body starts here\n",
      "    return num            #returning result\n",
      "                          #Function body ends here\n",
      "main()                    #calling main function"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        " num = 3 before function call.\n",
        "\n",
        " result = 30, after return from function.\n",
        "\n",
        " num = 3\n"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 7 page 222"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def main():                             #main starts here\n",
      "    print \"Enter two numbers: \"\n",
      "    nOne=eval(raw_input())              #taking input from user\n",
      "    nTwo=eval(raw_input())              #taking input from user\n",
      "    n=GCD(nOne,nTwo)\n",
      "    print \"\\nGCD of %d and %d is %d \\n\" %(nOne,nTwo,n)        #main ends here\n",
      "    return\n",
      "def GCD(x,y):                           #function starts here\n",
      "    result=1\n",
      "    k=2\n",
      "    while((k<=x) and (k<=y)):           #checking if x and y are greater than k\n",
      "        if((x%k==0) and (y%k==0)):\n",
      "            result=k\n",
      "        k+=1\n",
      "    return result                       #function ends here\n",
      "main()                                  #function call"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter two numbers: \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "4\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "8\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "GCD of 4 and 8 is 4 \n",
        "\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 8 page 222"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def main():                               #main starts here\n",
      "    print \"\\nEnter the Number: \"\n",
      "    n=eval(raw_input())                   #taking input from user\n",
      "    print \"\\nPrime factors on %d is...\\n \" % (n)       \n",
      "    for d in range(2,(n/2)+1,1):\n",
      "        if((n%d==0) and isPrime(d)):      #calculating prime factors, isPrime() function\n",
      "            print \"%d\" % (d)\n",
      "    return                                #main ends here \n",
      "def isPrime(x):                           #isPrime() function starts here\n",
      "    for d in range(2,(x/2)+1,1):\n",
      "        if(x%d==0):\n",
      "            return 0\n",
      "    return 1                              #isPrime() function ends here\n",
      "main()                                    #calling main"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Enter the Number: \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "2\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Prime factors on 2 is...\n",
        " \n"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 9 page 223"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def main():                           #main starts here\n",
      "    arr=[1,2,3]                       #Array declaration and initialisation\n",
      "    change(arr)                       #calling function\n",
      "    print \"Elements are %d, %d and %d\" % (arr[0],arr[1],arr[2])\n",
      "    return                            #main starts here\n",
      "def change(my_array):\n",
      "    my_array[0]=10                    #Changing values\n",
      "    my_array[1]=20\n",
      "    return\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Elements are 10, 20 and 3\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 10 page 223 and 224"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#main starts here\n",
      "def main():\n",
      "    arr=[3,2,7,0,6,4,9,8,1,5]  #array declaration and initializtion\n",
      "    print \"The array before sort is: \\n\" \n",
      "    for i in range(0,10,1):    #displaying array values before changing\n",
      "        print arr[i],\n",
      "    sort(arr,10)\n",
      "    print \"\\nThe array after sort is: \\n\"\n",
      "    for i in range(0,10,1):    #displaying array values after changing\n",
      "        print arr[i],\n",
      "    return\n",
      "#main ends here\n",
      "#functions starts here\n",
      "def sort(a,n):\n",
      "    for i in range(0,n-1,1):       #sorting array values\n",
      "        for j in range(0,n-i-1,1):\n",
      "            if(a[j]>a[j+1]):\n",
      "                temp=a[j]\n",
      "                a[j]=a[j+1]\n",
      "                a[j+1]=temp\n",
      "    return\n",
      "#functions ends here\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The array before sort is: \n",
        "\n",
        "3 2 7 0 6 4 9 8 1 5 \n",
        "The array after sort is: \n",
        "\n",
        "0 1 2 3 4 5 6 7 8 9\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 11 page 224"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#main starts here\n",
      "def main():\n",
      "    myInts=[1,2,3,4,5,6,7,8,9,10]          #Array initialisation and declaration\n",
      "    size=10\n",
      "    print \"\\n\\nThe given numbers are:\"\n",
      "    for i in range(0,size,1):             #displaying array values before changing\n",
      "        print myInts[i],\n",
      "    doubleThem(myInts,size)               #calling function\n",
      "    print \"\\nThe double numbers are: \"\n",
      "    for i in range(0,size,1):             #displaying array values after changing\n",
      "        print myInts[i],\n",
      "    return\n",
      "#main ends here\n",
      "#*********function defination***********#\n",
      "def doubleThem(a,size):\n",
      "    for i in range(0,size,1):            #multplying array values by 2\n",
      "        a[i]=2*a[i]\n",
      "    return\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "\n",
        "The given numbers are:\n",
        "1 2 3 4 5 6 7 8 9 10 \n",
        "The double numbers are: \n",
        "2 4 6 8 10 12 14 16 18 20\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 12 page 224 and 225"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#main starts here\n",
      "def main():\n",
      "    b=list()   #array declaration\n",
      "    n=input(\"How many students?\")\n",
      "    print \"Enter the age of students\\n\"\n",
      "    for i in range(0,n,1):    #taking input from user\n",
      "        val=input()\n",
      "        b.append(val)\n",
      "    average=avg_age(b,n)      #calling function\n",
      "    print \"\\nThe avg age of students is = %f\" % average\n",
      "    return\n",
      "#main ends here\n",
      "def avg_age(a,n):\n",
      "    sum=0.0\n",
      "    for j in range(0,n,1):   #calculating avg age\n",
      "        sum=sum+a[j]\n",
      "    return sum/n\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "How many students?5\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the age of students\n",
        "\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "The avg age of students is = 10.000000\n"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 13 page 225"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#main starts here\n",
      "def main():\n",
      "    values=list()           #array declaration\n",
      "    print \"Enter 5 numbers\"\n",
      "    for i in range(0,5,1):  #taking input from user\n",
      "        val=input()\n",
      "        values.append(val)\n",
      "    max1=maximum(values,5)  #calling function\n",
      "    print \"Maximum value is %d\\n\" % max1\n",
      "    return\n",
      "#main ends here\n",
      "#function begins here\n",
      "def maximum(values,n):\n",
      "    max_value=values[0]\n",
      "    for i in range(0,n,1):  #finding maximum value\n",
      "        if(values[i]>max_value):\n",
      "            max_value=values[i]\n",
      "    return max_value\n",
      "#function ends here\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter 5 numbers\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "125\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "365\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "552\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "001\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-568\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Maximum value is 552\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 14 page 225 and 226"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def main():\n",
      "    a=list()          #source string\n",
      "    b=list()          #destination string\n",
      "    print \"Input source string: \"\n",
      "    a=raw_input()     #read input string\n",
      "    b=string_copy(b,a)  #function call\n",
      "    print \"\\nDestination string: %s\\n\" % b\n",
      "    return\n",
      "#function call\n",
      "def string_copy(d,s):\n",
      "    print \"\\nSource string: %s\" % s \n",
      "    #copying the string\n",
      "    d=s\n",
      "    return d\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Input source string: \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "i love python\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Source string: i love python\n",
        "\n",
        "Destination string: i love python\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 15 page 226"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "ROW=2                        #define row 3\n",
      "COLUMN=3                    #define col 3\n",
      "def main():     \n",
      "    global ROW,COLUMN\n",
      "    a=[[0 for row in range(0,COLUMN)] for col in range(0,ROW)]\n",
      "    b=[[0 for row in range(0,COLUMN)] for col in range(0,ROW)]\n",
      "    print \"\\nEnter elements of the first matrix.\\n\"\n",
      "    #Read first matrix elements\n",
      "    for i in range(ROW):\n",
      "        for j in range(COLUMN):\n",
      "            a[i][j]=input()\n",
      "    print \"\\nEnter elements of the second matrix.\\n\"\n",
      "    #Read second matrix elements\n",
      "    for i in range(ROW):\n",
      "        for j in range(COLUMN):\n",
      "            b[i][j]=input()\n",
      "    mat_arith(a,b)  #function call\n",
      "def mat_arith(a,b):\n",
      "    global ROW,COLUMN\n",
      "    c=[[0 for row in range(0,COLUMN)] for col in range(0,ROW)]\n",
      "    print \"\\nFor addition enter: 1\\n\"\n",
      "    print \"\\nFor subtraction enter: 2\\n\"\n",
      "    print \"\\nEnter your choice\\n\"\n",
      "    choice=eval(raw_input())\n",
      "    for i in range(ROW):\n",
      "         for j in range(COLUMN):\n",
      "                if choice == 1:      #checking for addation and subtraction and performing it\n",
      "                    c[i][j]=a[i][j]+b[i][j]\n",
      "                elif choice == 2:\n",
      "                    c[i][j]=a[i][j]-b[i][j]\n",
      "                else:\n",
      "                    print \"Invalid choice. Task not done.\"\n",
      "                    return\n",
      "    print \"\\nThe resulting matrix is:\\n\"\n",
      "    for i in range(ROW):\n",
      "         for j in range(COLUMN):\n",
      "             print c[i][j],\n",
      "         print(\"\\n\")\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Enter elements of the first matrix.\n",
        "\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "2\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "4\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "6\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "7\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "8\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Enter elements of the second matrix.\n",
        "\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "3\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "5\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "7\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "9\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "11\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "For addition enter: 1\n",
        "\n",
        "\n",
        "For subtraction enter: 2\n",
        "\n",
        "\n",
        "Enter your choice\n",
        "\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "The resulting matrix is:\n",
        "\n",
        "3 7 11 \n",
        "\n",
        "14 17 21 \n",
        "\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 16 page 227 and 228"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#main strats here\n",
      "def main():\n",
      "    a=5\n",
      "    b=7\n",
      "    print \"In main: a= %d, b= %d\\n\" % (a,b)\n",
      "    exchange(a,b)   #calling function\n",
      "    print\"\\nBack in main:\"\n",
      "    print\"a= %d, b= %d\" % (a,b)\n",
      "    return\n",
      "#main ends here\n",
      "#function starts here\n",
      "def exchange(a,b):\n",
      "    print\"In function exchange() before change: just received from main... a=%d and b=%d \" % (a,b)\n",
      "    #exchanging values\n",
      "    temp=a\n",
      "    a=b\n",
      "    b=temp\n",
      "    print\"In function exchange() after change:\"\n",
      "    print\"a=%d and b=%d \" % (a,b)\n",
      "    return\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "In main: a= 5, b= 7\n",
        "\n",
        "In function exchange() before change: just received from main... a=5 and b=7 \n",
        "In function exchange() after change:\n",
        "a=7 and b=5 \n",
        "\n",
        "Back in main:\n",
        "a= 5, b= 7\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 17 page 228"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a=5        #declaration of global variables\n",
      "b=7\n",
      "#main starts here\n",
      "def main():\n",
      "    global a\n",
      "    global b\n",
      "    print \"In main: a= %d, b= %d\\n\" % (a,b)\n",
      "    exchange() #calling function\n",
      "    print\"\\nBack in main:\",\n",
      "    print\"a= %d, b= %d\" % (a,b)\n",
      "#main ends here\n",
      "#function starts here\n",
      "def exchange():\n",
      "    global a\n",
      "    global b\n",
      "    print\"In function exchange() before change: just received from main... a=%d and b=%d \" % (a,b)\n",
      "    temp=a\n",
      "    a=b\n",
      "    b=temp\n",
      "    print\"In function exchange() after change:\",\n",
      "    print\"a=%d and b=%d \" % (a,b)\n",
      "    return\n",
      "#function ends here\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "In main: a= 5, b= 7\n",
        "\n",
        "In function exchange() before change: just received from main... a=5 and b=7 \n",
        "In function exchange() after change: a=7 and b=5 \n",
        "\n",
        "Back in main: a= 7, b= 5\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 18 page 229"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def fn1():\n",
      "    #variable declaration in inner block\n",
      "    x=45\n",
      "    print\"\\nin inner block x= %d\" % x\n",
      "#variable declaration in outer block\n",
      "x=3\n",
      "print \"\\nin outer block x = %d before executing inner block\" % x\n",
      "fn1()\n",
      "print \"\\nin outer block x = %d after executing inner block\" % x"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "in outer block x = 3 before executing inner block\n",
        "\n",
        "in inner block x= 45\n",
        "\n",
        "in outer block x = 3 after executing inner block\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 19 page 231"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#function starts here\n",
      "def fn1():\n",
      "    a=10\n",
      "    i=4199232\n",
      "    print \"a=%d\" % a\n",
      "    print \"i=%d\" % i\n",
      "#function ends here\n",
      "a=5\n",
      "print \"a=%d\" % a\n",
      "fn1()  #function call\n",
      "print \"a=%d\" % a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "a=5\n",
        "a=10\n",
        "i=4199232\n",
        "a=5\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 20 page 232"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "i = 0\n",
      "#function starts here\n",
      "def show():\n",
      "    global i\n",
      "    print 'i =',i\n",
      "    i+=1\n",
      "#function ends here\n",
      "print\"\\nFirst call of show()\"\n",
      "show()  #function call\n",
      "print\"\\nSecond call of show()\"\n",
      "show()  #function call\n",
      "print\"\\nThird call of show()\"\n",
      "show()  #function call"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "First call of show()\n",
        "i = 0\n",
        "\n",
        "Second call of show()\n",
        "i = 1\n",
        "\n",
        "Third call of show()\n",
        "i = 2\n"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 21 page 231"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "i = None\n",
      "#function starts here\n",
      "def show():\n",
      "    print 'Value of i in pgm2.c =',i\n",
      "#function ends here\n",
      "i = 10\n",
      "#function call\n",
      "show()\n",
      "print 'Value of i in pgm1.c =',i"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Value of i in pgm2.c = 10\n",
        "Value of i in pgm1.c = 10\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 22 page 233"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "i = None\n",
      "#function starts here\n",
      "def show():\n",
      "    global i\n",
      "    i = 20\n",
      "    print \"value of i in pgm2.c = \", i\n",
      "#function ends here\n",
      "show()  #function call\n",
      "print\"Value of i in pgm1.c =\",i"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "value of i in pgm2.c =  20\n",
        "Value of i in pgm1.c = 20\n"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 23 page 236"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import sys, traceback\n",
      "#main starts here\n",
      "def main():\n",
      "    print \"\\nEnter the number of terms: \"\n",
      "    i=eval(raw_input())   #taking input\n",
      "    if (i<0): \n",
      "        print\"\\nError - Number of terms cannot be negative\\n\"\n",
      "        sys.exit(0)\n",
      "    print\"Fibonacci sequence for %d terms is: \" % i\n",
      "    for j in range(1,i+1,1):\n",
      "        print\"%d\" % fib(j)    #function call\n",
      "#function ends here\n",
      "#function starts here\n",
      "def fib(val):\n",
      "    if(val<=2):\n",
      "        return 1\n",
      "    else:\n",
      "        return(fib(val-1)+fib(val-2))\n",
      "#function ends here\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Enter the number of terms: \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "5\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Fibonacci sequence for 5 terms is: \n",
        "1\n",
        "1\n",
        "2\n",
        "3\n",
        "5\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example 24 page 237"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#main starts here\n",
      "def main():\n",
      "    print\"Enter the numbers: \"\n",
      "    i=eval(raw_input())\n",
      "    j=eval(raw_input())\n",
      "    print\"The GCD of %d and %d is %d\" % (i,j,gcd(i,j))   #calling gcd function\n",
      "    return\n",
      "#function ends here\n",
      "#function starts here\n",
      "def gcd(a,b):\n",
      "    remainder=a%b\n",
      "    if(remainder==0):\n",
      "        return b\n",
      "    else:\n",
      "        return gcd(b,remainder)      #recursive call to itself, gcd function\n",
      "#function ends here\n",
      "main()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the numbers: \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "4\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "8\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The GCD of 4 and 8 is 4\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}