{
 "metadata": {
  "name": "",
  "signature": "sha256:2551d4c0f797f2bbef63a528dde1d2dd1067208b3f54db92e7a20ac687ed39db"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "CHAPTER 10: STRUCTURES"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:342-343"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "name=[]\n",
      "price=[]\n",
      "pages=[]\n",
      "for i in range(3):\n",
      "    name.append(\"\\0\")\n",
      "    price.append(0)\n",
      "    pages.append(0)\n",
      "print \"Enter names,prices and no. of pages of 3 books\\n\"\n",
      "for i in range(0,3,1):\n",
      "    name[i]=raw_input()\n",
      "    price[i]=eval(raw_input())\n",
      "    pages[i]=eval(raw_input())\n",
      "print \"\\nAnd this is what you entered\\n\"\n",
      "for i in range(0,3,1):\n",
      "    print \"%c %f %d\\n\" % (name[i],price[i],pages[i])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter names,prices and no. of pages of 3 books\n",
        "\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "A\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "100.00\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "354\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "C\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "256.50\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "682\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "F\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "233.70\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "512\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "And this is what you entered\n",
        "\n",
        "A 100.000000 354\n",
        "\n",
        "C 256.500000 682\n",
        "\n",
        "F 233.700000 512\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:343-344"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class book:                                             #YOU CAN ALSO USE CTYPES FOR IMPLEMENTING STRUCTURES\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "b1=book()\n",
      "b2=book()\n",
      "b3=book()\n",
      "print \"Enter names,prices & no. of pages of 3 books\\n\"\n",
      "b1.name=raw_input()\n",
      "b1.price=eval(raw_input())\n",
      "b1.pages=eval(raw_input())\n",
      "b2.name=raw_input()\n",
      "b2.price=eval(raw_input())\n",
      "b2.pages=eval(raw_input())\n",
      "b3.name=raw_input()\n",
      "b3.price=eval(raw_input())\n",
      "b3.pages=eval(raw_input())\n",
      "print \"And this is what you entered\\n\"\n",
      "print \"%c %f %d\\n\" % (b1.name,b1.price,b1.pages)\n",
      "print \"%c %f %d\\n\" % (b2.name,b2.price,b2.pages)\n",
      "print \"%c %f %d\\n\" % (b3.name,b3.price,b3.pages)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter names,prices & no. of pages of 3 books\n",
        "\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "A\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "100.00\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "354\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "C\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "256.50\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "682\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "F\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "233.70\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "512\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "And this is what you entered\n",
        "\n",
        "A 100.000000 354\n",
        "\n",
        "C 256.500000 682\n",
        "\n",
        "F 233.700000 512\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:347"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class book():\n",
      "    def __init__(self,**kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "b1=book(name='B',price=130.00,pages=550)\n",
      "print \"Address of name=%u\\n\" % (id(b1.name))\n",
      "print \"Address of price=%u\\n\" % (id(b1.price))\n",
      "print \"Address of pages=%u\\n\" % (id(b1.pages))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Address of name=20788864\n",
        "\n",
        "Address of price=88371144\n",
        "\n",
        "Address of pages=88859008\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:348-349"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def linkfloat():\n",
      "    a=0\n",
      "    b=id(a)                             #cause emulator to be linked\n",
      "class book():\n",
      "    def __init__(self,**kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "b=[]\n",
      "for i in range(3):\n",
      "    b.append(0)                         #setting initial value as zero\n",
      "for i in range(0,3,1):\n",
      "    b[i]=book()\n",
      "for i in range(0,3,1):\n",
      "    print \"Enter name price and pages\"\n",
      "    b[i].name=raw_input()\n",
      "    b[i].price=eval(raw_input())\n",
      "    b[i].pages=eval(raw_input())\n",
      "for i in range(0,3,1):\n",
      "    print \"%c %f %d\\n\" % (b[i].name,b[i].price,b[i].pages)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name price and pages\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "A\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "100.00\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "354\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name price and pages\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "C\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "256.50\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "682\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name price and pages\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "F\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "233.70\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "512\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "A 100.000000 354\n",
        "\n",
        "C 256.500000 682\n",
        "\n",
        "F 233.700000 512\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:350-351"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class employee():\n",
      "    def __init__(self,**kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "e1=employee(name=\"Sanjay\",age=30,salary=5500.50)\n",
      "e2=employee()\n",
      "e3=employee()\n",
      "#piece-meal copying\n",
      "import copy\n",
      "e2.name=copy.copy(e1.name)\n",
      "e2.age=e1.age\n",
      "e2.salary=e1.salary\n",
      "#copying all elements at one go\n",
      "e3=e2\n",
      "print \"%s %d %f\\n\" % (e1.name,e1.age,e1.salary)\n",
      "print \"%s %d %f\\n\" % (e2.name,e2.age,e2.salary)\n",
      "print \"%s %d %f\\n\" % (e3.name,e3.age,e3.salary)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Sanjay 30 5500.500000\n",
        "\n",
        "Sanjay 30 5500.500000\n",
        "\n",
        "Sanjay 30 5500.500000\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:351-352"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class address():\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "class emp():\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "a = address(phone=\"531046\", city=\"nagpur\", pin=10)\n",
      "e = emp(name=\"jeru\", address=a)\n",
      "print \"name=%s phone=%s\\n\" % (e.name,e.address.phone)\n",
      "print \"city=%s pin=%d\\n\" % (e.address.city,e.address.pin)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "name=jeru phone=531046\n",
        "\n",
        "city=nagpur pin=10\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:353"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class book():\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "def display(s,t,n):\n",
      "    print \"%s %s %d\\n\" % (s,t,n)\n",
      "b1=book(name=\"Let us C\",author=\"YPK\",callno=101)\n",
      "display(b1.name,b1.author,b1.callno)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Let us C YPK 101\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:353-354"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class book():\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "def display(b):\n",
      "    print \"%s %s %d\\n\" % (b.name,b.author,b.callno)\n",
      "b1=book(name=\"Let us C\",author=\"YPK\",callno=101)\n",
      "display(b1)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Let us C YPK 101\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:354-355"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class book():\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "b1=book(name=\"Let us C\",author=\"YPK\",callno=101)\n",
      "ptr=book()\n",
      "ptr=b1\n",
      "print \"%s %s %d\\n\" % (b1.name,b1.author,b1.callno)\n",
      "print \"%s %s %d\\n\" % (ptr.name,ptr.author,ptr.callno)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Let us C YPK 101\n",
        "\n",
        "Let us C YPK 101\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:355-356"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class book():\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "def display(b):\n",
      "    print \"%s %s %d\\n\" % (b.name,b.author,b.callno)\n",
      "b1=book(name=\"Let us C\",author=\"YPK\",callno=101)\n",
      "display(b1)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Let us C YPK 101\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:356"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class emp():\n",
      "    def __init__(self, **kwds):\n",
      "        self.__dict__.update(kwds)\n",
      "e=emp(a=0,ch='\\0',s=0.0)\n",
      "print \"%u %u %u\\n\" % (id(e.a),id(e.ch),id(e.s))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "20623060 20204312 88374024\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:357-358"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "class emp():\n",
      "    def __init__(self,a,ch,s):                  #Structure without using dictionary\n",
      "        self.a=a\n",
      "        self.ch=ch\n",
      "        self.s=s\n",
      "e=emp(a=0,ch='\\0',s=0.0)\n",
      "print \"%u %u %u\\n\" % (id(e.a),id(e.ch),id(e.s))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "20360916 19942168 88177544\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 10
    }
   ],
   "metadata": {}
  }
 ]
}