{
 "metadata": {
  "name": "",
  "signature": "sha256:bfcc6bf3e86f2ff3b103be284b1b027f6faa9020241e866b9b4398fd89f8923c"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Chapter 12, Strings and String Functions"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-1, Page Number: 331"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# The control string is just a string\n",
      "\n",
      "format = \"%s\"\n",
      "message = \"hello\"\n",
      "\n",
      "print format % message"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "hello\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-2, Page Number: 334"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# The control string is just a string - part 2\n",
      "\n",
      "format = \"%.15s\"\n",
      "message = \"hellohellohello\"\n",
      "\n",
      "# Read in the number of characters to be displayed from \"message\"\n",
      "print \"How many characters do you want displayed?\",\n",
      "size = 5\n",
      "print size\n",
      "\n",
      "# Convert size to 2-digit number in format[2] and format[3]\n",
      "\n",
      "format = \"%.\" + str(size / 10) + str(size % 10) + \"s\"\n",
      "print \"The format is %s\"%format\n",
      "\n",
      "# Print the string\n",
      "print format % message"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "How many characters do you want displayed? 5\n",
        "The format is %.05s\n",
        "hello\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-3, Page Number 336"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# sprintf function \n",
      "\n",
      "# There is no sprintf functionality in python\n",
      "# However an alternate way to solve the problem is...\n",
      "\n",
      "print \"Please enter a number:\",\n",
      "number = 17\n",
      "print number\n",
      "\n",
      "string = \"The number is %d\"%number\n",
      "\n",
      "print \"%s\"%string\n",
      "\n",
      "# OR \n",
      "\n",
      "print string"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Please enter a number: 17\n",
        "The number is 17\n",
        "The number is 17\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-4, Page Number 337"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Variable control string using the sprintf function\n",
      "\n",
      "message = \"hellohellohello\"\n",
      "\n",
      "# Read in the number of characters to be displayed from message \n",
      "print \"How many characters do you want displayed?\",\n",
      "size = 7\n",
      "print size\n",
      "\n",
      "# Create format in \"format\" using \"size\"\n",
      "format = \"%%.%ds\\n\"%size\n",
      "print \"The format is: %s\"%format\n",
      "\n",
      "# Print the string\n",
      "print format % message"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "How many characters do you want displayed? 7\n",
        "The format is: %.7s\n",
        "\n",
        "hellohe\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-5, Page Number 338"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# A terse string copy function\n",
      "\n",
      "def strcpy(copy, original):\n",
      "\t\"\"\" copies one string into another \"\"\"\n",
      "\tcopy = original\n",
      "\treturn copy\n",
      "\n",
      "string1 = \"\"\n",
      "string1 = strcpy(string1, \"This is a message\")\n",
      "print \"String 1 = %s\"%string1\n",
      "\n",
      "string2 = \"\"\n",
      "string2 = strcpy(string2, string1)\n",
      "print \"String 2 = %s\"%string2"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "String 1 = This is a message\n",
        "String 2 = This is a message\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-7, Page Number 344"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "string_point = \"hello\"\n",
      "\n",
      "string_var1 = string_point\n",
      "\n",
      "print \"%s\\n%s\"%(string_point,string_var1)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "hello\n",
        "hello\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-8, Page Number 346"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# strcat function in python\n",
      "# simple addition of strings results in concatenation in python\n",
      "\n",
      "def strcat(string1, string2) :\n",
      "\t\"\"\" concatenates the string and returns the concatenated string \"\"\"\n",
      "\tstring2 = string1 + string2\n",
      "\treturn string2\n",
      "\n",
      "string1 = \"hello\"\n",
      "string2 = strcat(string1,\" there\")\n",
      "print \"string1 = %s\\nstring2 = %s\"%(string1,string2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "string1 = hello\n",
        "string2 = hello there\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-9, Page Number 348"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# strcat version 2\n",
      "\n",
      "def strcat(string1, string2) :\n",
      "\tstring1 = string1 + string2\n",
      "\tstring2 = string1\n",
      "\treturn string1,string2\n",
      "\n",
      "string1 = \"hello\"\n",
      "string1,string2 = strcat(string1, \" there\")\n",
      "\n",
      "print \"string1 = %s\\nstring2 = %s\"%(string1,string2)\n",
      "\n",
      "if string1 == string2 :\n",
      "\tprint \"string2 points to string1\"\n",
      "else :\n",
      "\tprint \"string2 does not point to string1\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "string1 = hello there\n",
        "string2 = hello there\n",
        "string2 points to string1\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 12-10, Page Number 351"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Alphabetizing program using dynamically allocated arrays\n",
      "\n",
      "# Macro definition\n",
      "MAX_ARRAY_SIZE = 20\t\t# The array may have up to 20 elements\n",
      "MAX_STRING_SIZE = 10 \t# Each string may have up to 10 characters\n",
      "# Message flags for \"print_array\"\n",
      "ORIGINAL = 0\n",
      "SORTED = 1\n",
      "\n",
      "words = [ \"cat\", \"pig\", \"dog\", \"earlobe\", \"bingo\", \"elbow\", \"likely\", \"radar\" ]\n",
      "array_size = 0\n",
      "\n",
      "def get_size(size) :\n",
      "\t\"\"\" Read the size of the array into size (until a value is entered) \"\"\"\n",
      "\tprint \"How many words? \",\n",
      "\tsize = 8\n",
      "\tprint size\n",
      "\twhile size < 1 or size > MAX_ARRAY_SIZE :\n",
      "\t\tprint \"How many words? \",\n",
      "\t\tsize = 8\n",
      "\t\tprint size\n",
      "\tglobal array_size\n",
      "\tarray_size = size\n",
      "\n",
      "def get_array(array,size) :\n",
      "\t\"\"\" Read in the string array called 'array' of size 'size' \"\"\"\n",
      "\tprint \"Please enter the words:\"\n",
      "\tfor i in array :\n",
      "\t\tprint i\n",
      "\t\n",
      "def print_array(array,size,message) :\n",
      "\t\"\"\" Print out string array 'array' of size 'size'. 'message' is a flag indicating which message to display(ORIGINAL or SORTED) \"\"\"\n",
      "\tprintout = [ \"\\nThe original array is:\", \"\\nThe sorted array is:\", \"\\n\" ]\n",
      "\t# Print the appropriate message\n",
      "\tprint \"%s\"%printout[message]\n",
      "\n",
      "\tfor i in array :\n",
      "\t\tprint i\n",
      "\n",
      "def pointer_sort(array,size) :\n",
      "\t\"\"\" sort string array \"\"\"\n",
      "\tfor i in range (size-1) :\n",
      "\t\tfor j in range (i + 1, size) :\n",
      "\t\t\tif array[i] > array[j] :\n",
      "\t\t\t\tswap(i,j)\n",
      "\n",
      "def swap(i, j) :\n",
      "\t\"\"\" Exchange strings \"\"\"\n",
      "\tglobal words\n",
      "\twords[i],words[j] = words[j],words[i]\n",
      "\n",
      "get_size(array_size)\t\t# Read in the array size\n",
      "get_array(words, array_size)\t# Read in the string array \"words\" of size \"array_size\"\n",
      "print_array(words, array_size, ORIGINAL)\t# Echo the original array\n",
      "pointer_sort(words, array_size)\t\n",
      "print_array(words, array_size, SORTED) # Print the sorted array"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "How many words?  8\n",
        "Please enter the words:\n",
        "cat\n",
        "pig\n",
        "dog\n",
        "earlobe\n",
        "bingo\n",
        "elbow\n",
        "likely\n",
        "radar\n",
        "\n",
        "The original array is:\n",
        "cat\n",
        "pig\n",
        "dog\n",
        "earlobe\n",
        "bingo\n",
        "elbow\n",
        "likely\n",
        "radar\n",
        "\n",
        "The sorted array is:\n",
        "bingo\n",
        "cat\n",
        "dog\n",
        "earlobe\n",
        "elbow\n",
        "likely\n",
        "pig\n",
        "radar\n"
       ]
      }
     ],
     "prompt_number": 10
    }
   ],
   "metadata": {}
  }
 ]
}
