{ "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": [ { "ename": "IOError", "evalue": "[Errno 2] No such file or directory: 'numbers.dat'", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mIOError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0min_file\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopen\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'numbers.dat'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'r'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mIOError\u001b[0m: [Errno 2] No such file or directory: 'numbers.dat'" ] } ], "prompt_number": 5 }, { "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": [ { "ename": "IOError", "evalue": "[Errno 2] No such file or directory: 'numbers.dat'", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mIOError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0min_file\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopen\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'numbers.dat'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'r'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mIOError\u001b[0m: [Errno 2] No such file or directory: 'numbers.dat'" ] } ], "prompt_number": 6 }, { "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 = 0\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": [ { "ename": "ZeroDivisionError", "evalue": "integer division or modulo by zero", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'Starting\\n'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'Before divide...'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 12\u001b[1;33m \u001b[0mi\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mi\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mj\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 13\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'After\\n'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "Starting\n", "\n", "Before divide...\n" ] } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Example 15.11, Page number: 304" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "# Variable declaration\n", "import sys\n", "i = 1\n", "j = 0\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" ] }, { "ename": "ZeroDivisionError", "evalue": "integer division or modulo by zero", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'Before divide...'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstdout\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflush\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m \u001b[0mi\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mi\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mj\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'After\\n'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstdout\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflush\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mZeroDivisionError\u001b[0m: integer division or modulo by zero" ] } ], "prompt_number": 8 } ], "metadata": {} } ] }