{
 "metadata": {
  "name": "",
  "signature": "sha256:23b3891085deb8af52412d44380b6187a4110d7e026531ec90b3b2ae79d61d0f"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Chapter 15: Debugging and optimization"
     ]
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Example 15.1, Page number: 275"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "# Function declaration\n",
      "def lookup (name) :\n",
      "   lists = ['John', 'Jim', 'Jane', 'Clyde']\n",
      "   result = 0\n",
      "\n",
      "   for index in range (0, 4) :\n",
      "      if (lists[index] == name) :\n",
      "         result = 1\n",
      "         break\n",
      "   \n",
      "   return result\n",
      "\n",
      "# Calculation and result\n",
      "name = 'John'\n",
      "\n",
      "if (lookup (name)) :\n",
      "   print ('%s is in the list\\n' % name)\n",
      "else :\n",
      "   print ('%s is not in the list\\n' % name)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "John is in the list\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Example 15.6, Page number: 288"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "# Variable and function declaration\n",
      "seven_count = 0\n",
      "three_count = 0\n",
      "data = []\n",
      "\n",
      "def get_data (data) :\n",
      "   for i in range (0, 5) :\n",
      "      x = 3\n",
      "      data.append(int(x))\n",
      "   print (data)\n",
      "\n",
      "# Calculation\n",
      "get_data (data)\n",
      "for index in range (0, 5) :\n",
      "   if data[index] == 3 :\n",
      "      three_count += 1\n",
      "\n",
      "   if data[index] == 7 :\n",
      "      seven_count += 1\n",
      "\n",
      "# Result\n",
      "print ('Threes %d Sevens %d' % (three_count, seven_count))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[3, 3, 3, 3, 3]\n",
        "Threes 5 Sevens 0\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Example 15.7, Page number: 292"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "# Variable declaration\n",
      "import sys\n",
      "import os\n",
      "in_file = open ('numbers.dat', 'r')\n",
      "\n",
      "data = []\n",
      "max_count = 0\n",
      " \n",
      "# Calculation and result\n",
      "if not os.path.exists ('numbers.dat') :\n",
      "   print ('Error:Unable to open numbers.dat\\n')\n",
      "   sys.exit(1)\n",
      "\n",
      "for line in in_file :\n",
      "   data.append(line)\n",
      "   max_count += 1\n",
      "\n",
      "while (1) :\n",
      "   search = 6\n",
      "   \n",
      "   if (search == -1) :\n",
      "      break\n",
      "\n",
      "   low = 0\n",
      "   high = max_count\n",
      "\n",
      "   while (1) :\n",
      "      mid = (low + high) / 2\n",
      "      middle = int (mid)      \n",
      "\n",
      "      if (int (data[middle]) == search) :\n",
      "         print ('Found at index %d\\n' % (middle + 1))\n",
      "         break\n",
      "\n",
      "      if (low == high) :\n",
      "         print ('Not found\\n')\n",
      "         break\n",
      "\n",
      "      if (int (data[middle]) < search) :\n",
      "         low = middle\n",
      "      else :\n",
      "         high = middle      \n",
      "\n",
      "in_file.close()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": "*"
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Example 15.8, Page number: 300"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "# Variable declaration\n",
      "import sys\n",
      "import os\n",
      "in_file = open ('numbers.dat', 'r')\n",
      "\n",
      "data = []\n",
      "max_count = 0\n",
      " \n",
      "# Calculation and result\n",
      "if not os.path.exists ('numbers.dat') :\n",
      "   print ('Error:Unable to open numbers.dat\\n')\n",
      "   sys.exit(1)\n",
      "\n",
      "for line in in_file :\n",
      "   data.append(line)\n",
      "   max_count += 1\n",
      "\n",
      "while (1) :\n",
      "   search = 14\n",
      "   \n",
      "   if (search == -1) :\n",
      "      break\n",
      "\n",
      "   low = 0\n",
      "   high = max_count\n",
      "\n",
      "   while (1) :\n",
      "      mid = (low + high) / 2\n",
      "      middle = int (mid)      \n",
      "\n",
      "      if (int (data[middle]) == search) :\n",
      "         print ('Found at index %d\\n' % (middle + 1))\n",
      "         break\n",
      "\n",
      "      if (low == high) :\n",
      "         print ('Not found\\n')\n",
      "         break\n",
      "\n",
      "      if (int (data[middle]) < search) :\n",
      "         low = middle\n",
      "      else :\n",
      "         high = middle      \n",
      "\n",
      "in_file.close()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": "*"
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Example 15.10, Page number: 304"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "# Variable declaration\n",
      "i = 1\n",
      "j = 1\n",
      "\n",
      "# Calculation and result\n",
      "print ('Starting\\n')\n",
      "print ('Before divide...')\n",
      "i = i / j\n",
      "print ('After\\n')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Starting\n",
        "\n",
        "Before divide...\n",
        "After\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Example 15.11, Page number: 304"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from __future__ import division\n",
      "# Variable declaration\n",
      "import sys\n",
      "i = 1\n",
      "j = 1\n",
      "\n",
      "# Calculation and result\n",
      "print ('Starting\\n')\n",
      "sys.stdout.flush()\n",
      "print ('Before divide...')\n",
      "sys.stdout.flush()\n",
      "i = i / j\n",
      "print ('After\\n')\n",
      "sys.stdout.flush()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Starting\n",
        "\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Before divide...\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "After\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}