{
 "metadata": {
  "name": "",
  "signature": "sha256:d543de519ea53ce295e62c624f3b779f3394a58f64540659aef438fffab60f98"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "CHAPTER 9: PUPPETTING ON STRINGS"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:311"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "name=\"Klinsman\"\n",
      "i=0\n",
      "while i<=7:\n",
      "    print \"%c\" % (name[i]),                                  #method of printing without line feed\n",
      "    i+=1\n",
      "print \"\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "K l i n s m a n \n",
        "\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:311-312"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "name=\"Klinsman \"\n",
      "i=0\n",
      "while name[i]!=' ':\n",
      "    print \"%c\" % (name[i]), \n",
      "    i+=1\n",
      "print \"\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " K l i n s m a n \n",
        "\n"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:312"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "name=\"Klinsman \"\n",
      "ptr=[]\n",
      "ptr=name                                        #store base address of string\n",
      "i=0\n",
      "while name[i]!=' ':\n",
      "    print \"%c\" % (ptr[i]), \n",
      "    i+=1\n",
      "print \"\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "K l i n s m a n \n",
        "\n"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:313"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "name=\"Klinsman\"\n",
      "print \"%s\" % (name)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Klinsman\n"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:313"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "print \"Enter your name\"\n",
      "name=raw_input()\n",
      "print \"Hello %s!\\n\" % (name)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter your name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Debashish\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Hello Debashish!\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:314"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "print \"Enter your full name:\"\n",
      "name=raw_input()\n",
      "print \"Hello!\"\n",
      "print name"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter your full name:\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Debashish Roy\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Hello!\n",
        "Debashish Roy\n"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:315"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "str1=\"Hello\"\n",
      "s=\"Good Morning\"\n",
      "str2=str1                         #No error in Python since all variables are by default pointers\n",
      "q=s"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:316"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "str1=\"Hello\"\n",
      "p=\"Hello\"\n",
      "str1=\"Bye\"                                            #No error in python\n",
      "p=\"Bye\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:317"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "arr=\"Bamboozled\"\n",
      "len1=len(arr)                                       #return length of string\n",
      "len2=len(\"Humpty Dumpty\")\n",
      "print \"string=%s length=%d\\n\" % (arr,len1)\n",
      "print \"string=%s length=%d\\n\" % (\"Humpty Dumpty\",len2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "string=Bamboozled length=10\n",
        "\n",
        "string=Humpty Dumpty length=13\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:317-318"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def xstrlen(s):\n",
      "    length=0\n",
      "    for item in s:\n",
      "        if s!=\"\\0\":\n",
      "            length+=1\n",
      "    return length\n",
      "arr=\"Bamboozled\"\n",
      "len1=xstrlen(arr) \n",
      "len2=xstrlen(\"Humpty Dumpty\")\n",
      "print \"string=%s length=%d\\n\" % (arr,len1)\n",
      "print \"string=%s length=%d\\n\" % (\"Humpty dumpty\",len2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "string=Bamboozled length=10\n",
        "\n",
        "string=Humpty dumpty length=13\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:319"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "import copy\n",
      "source=\"Sayonara\"\n",
      "target=copy.copy(source)                              #copy string\n",
      "print \"source string=%s\\n\" % (source)\n",
      "print \"target string=%s\\n\" % (target)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "source string=Sayonara\n",
        "\n",
        "target string=Sayonara\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 24
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:319-320"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def xstrcpy(t,s):\n",
      "    t=\"\\0\"\n",
      "    for item in s:\n",
      "        t=t+str(item)\n",
      "    return t\n",
      "source=\"Sayonara\"\n",
      "target=[]\n",
      "target=xstrcpy(target,source)\n",
      "print \"source string=%s\\n\" % (source)\n",
      "print \"target string=%s\\n\" % (target)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "source string=Sayonara\n",
        "\n",
        "target string=\u0000Sayonara\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 25
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:321"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "pi=3.14\n",
      "print \"Enter radius of circle\"\n",
      "r=eval(raw_input())\n",
      "a=pi*r*r\n",
      "print \"Area of circle=%f\\n\" % (a)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter radius of circle\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "3\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Area of circle=28.260000\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 26
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:322"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "source=\"Folks!\"\n",
      "target=\"Hello\"\n",
      "target=target+source\n",
      "print \"source string=%s\\n\" % (source)\n",
      "print \"target string=%s\\n\" % (target)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "source string=Folks!\n",
        "\n",
        "target string=HelloFolks!\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 27
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:322-323"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "string1=\"Jerry\"\n",
      "string2=\"Ferry\"\n",
      "i=cmp(string1,\"Jerry\")\n",
      "j=cmp(string1,string2)\n",
      "k=cmp(string1,\"Jerry boy\")\n",
      "print \"%d %d %d\\n\" % (i,j,k)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "0 1 -1\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 29
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:323-324"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "def FOUND():\n",
      "    return 1\n",
      "def NOTFOUND():\n",
      "    return 0\n",
      "masterlist=[\"akshay\",\"parag\",\"raman\",\"srinivas\",\"gopal\",\"rajesh\"]\n",
      "print \"Enter your name\"\n",
      "yourname=raw_input()\n",
      "flag=NOTFOUND()\n",
      "for i in range(0,6,1):\n",
      "    a=cmp(masterlist[i],yourname)\n",
      "    if a==0:\n",
      "        print \"Welcome,you can enter the palace\\n\"\n",
      "        flag=FOUND()\n",
      "        break\n",
      "if flag==NOTFOUND():\n",
      "    print \"Sorry,you are a trespasser\\n\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter your name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "gopal\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Welcome,you can enter the palace\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 51
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:327"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "names=[\"akshay\",\"parag\",\"raman\",\"srinivas\",\"gopal\",\"rajesh\"]\n",
      "names = map(bytearray, names)\n",
      "print \"Original:%s %s\\n\" % (names[2],names[3])\n",
      "s = sorted((names[2], names[3]), key=len)\n",
      "for i in range(len(s[1])):\n",
      "    try:\n",
      "        t=s[0][i]\n",
      "        s[0][i]=s[1][i]\n",
      "        s[1][i]=t\n",
      "    except IndexError:\n",
      "        for _ in range(i, len(s[1])):\n",
      "            #remove the items from the longer string to and append them to the shorter one.\n",
      "            s[0].append(s[1].pop(i))            \n",
      "print \"New:%s %s\\n\" % (names[2],names[3])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Original:raman srinivas\n",
        "\n",
        "New:srinivas raman\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 46
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE-328"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "names=[\"akshay\",\"parag\",\"raman\",\"srinivas\",\"gopal\",\"rajesh\"]\n",
      "print \"Original:%s %s\\n\" % (names[2],names[3])\n",
      "t=names[2]\n",
      "names[2]=names[3]\n",
      "names[3]=t\n",
      "print \"New:%s %s\\n\" % (names[2],names[3])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Original:raman srinivas\n",
        "\n",
        "New:srinivas raman\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 48
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:329"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "names=[]\n",
      "for i in range(6):\n",
      "    names.append(\"\\0\") \n",
      "for i in range(0,6,1):\n",
      "    print \"Enter name\"\n",
      "    names[i]=raw_input()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "RAM\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "GOPAL\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "PANDEY\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "GOPU\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "CHOTU\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "RADHEY\n"
       ]
      }
     ],
     "prompt_number": 50
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "EXAMPLE ON PAGE:329-330"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      " \n",
      "names=[]\n",
      "for i in range(0,6):\n",
      "    names.append('\\0')\n",
      "for i in range(0,6,1):\n",
      "    print \"Enter name\"\n",
      "    n=raw_input()\n",
      "    length=len(n)\n",
      "    import copy\n",
      "    p=copy.copy(n)\n",
      "    names[i]=p\n",
      "for i in range(0,6,1):\n",
      "    print \"%s\\n\" % (names[i])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "MUKUT\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "BIHARI\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "PANDEY\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "MADHUBALA\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "PANDEY\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter name\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "SUNITA\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "MUKUT\n",
        "\n",
        "BIHARI\n",
        "\n",
        "PANDEY\n",
        "\n",
        "MADHUBALA\n",
        "\n",
        "PANDEY\n",
        "\n",
        "SUNITA\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 7
    }
   ],
   "metadata": {}
  }
 ]
}