Merged back changes from presentation
[cas-master-teacher-training.git] / hangman-setter.ipynb
index c1d2ef0d234f27e3c62c78a5b6f48ce086fc3c04..aa2487e5575276df6220ca80dcabaed693e1fce6 100644 (file)
@@ -1,7 +1,7 @@
 {
  "metadata": {
   "name": "",
-  "signature": "sha256:db806d8bbe929161fce8776d2eeac6bad40d1abb93a97d112b974b6a8d50bdd0"
+  "signature": "sha256:65af1805536aa8ac4200804af5d4b4d0e55c2eb86d74b2cf3f31a632b3aeccf8"
  },
  "nbformat": 3,
  "nbformat_minor": 0,
@@ -53,7 +53,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 33
+     "prompt_number": 4
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 4,
+       "prompt_number": 5,
        "text": [
         "62856"
        ]
       }
      ],
-     "prompt_number": 4
+     "prompt_number": 5
     },
     {
      "cell_type": "code",
@@ -87,7 +87,7 @@
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 5,
+       "prompt_number": 6,
        "text": [
         "['jotted',\n",
         " 'jotting',\n",
        ]
       }
      ],
-     "prompt_number": 5
+     "prompt_number": 6
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 6,
+       "prompt_number": 7,
        "text": [
-        "'bluster'"
+        "'goitre'"
        ]
       }
      ],
-     "prompt_number": 6
+     "prompt_number": 7
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "guessed_word = list('_' * len(target))\n",
-      "guessed_word"
+      "discovered = list('_' * len(target))\n",
+      "discovered"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 7,
+       "prompt_number": 8,
        "text": [
-        "['_', '_', '_', '_', '_', '_', '_']"
+        "['_', '_', '_', '_', '_', '_']"
        ]
       }
      ],
-     "prompt_number": 7
+     "prompt_number": 8
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: dsf\n"
+        "Enter letter: r\n"
        ]
       },
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 8,
+       "prompt_number": 9,
        "text": [
-        "'d'"
+        "'r'"
        ]
       }
      ],
-     "prompt_number": 8
+     "prompt_number": 9
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "def find_all(string, letter):\n",
+      "def find_all_explicit(string, letter):\n",
       "    locations = []\n",
       "    starting=0\n",
       "    location = string.find(letter)\n",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 9
+     "prompt_number": 25
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "find_all('happy', 'q')"
+      "def find_all(string, letter):\n",
+      "    return [p for p, l in enumerate(string) if l == letter]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 26
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "find_all('happy', 'p')"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 10,
+       "prompt_number": 27,
        "text": [
-        "[]"
+        "[2, 3]"
        ]
       }
      ],
-     "prompt_number": 10
+     "prompt_number": 27
     },
     {
      "cell_type": "code",
       "guessed_letter = 'e'\n",
       "locations = find_all(target, guessed_letter)\n",
       "for location in locations:\n",
-      "    guessed_word[location] = guessed_letter\n",
-      "guessed_word"
+      "    discovered[location] = guessed_letter\n",
+      "discovered"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 11,
+       "prompt_number": 12,
        "text": [
-        "['_', '_', '_', '_', '_', 'e', '_']"
+        "['_', '_', '_', '_', '_', 'e']"
        ]
       }
      ],
-     "prompt_number": 11
+     "prompt_number": 12
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "def updated_guessed_word(guessed_word, guessed_letter):\n",
+      "def updated_discovered_word(discovered, guessed_letter):\n",
       "    locations = find_all(target, guessed_letter)\n",
       "    for location in locations:\n",
-      "        guessed_word[location] = guessed_letter\n",
-      "    return guessed_word"
+      "        discovered[location] = guessed_letter\n",
+      "    return discovered"
      ],
      "language": "python",
      "metadata": {},
      "collapsed": false,
      "input": [
       "def initialise():\n",
-      "    global lives, target, guessed_word, wrong_letters\n",
+      "    global lives, target, discovered, wrong_letters\n",
       "    lives = STARTING_LIVES\n",
       "    target = random.choice(WORDS)\n",
-      "    guessed_word = list('_' * len(target))\n",
+      "    discovered = list('_' * len(target))\n",
       "    wrong_letters = []"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 30
+     "prompt_number": 14
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
       "def do_turn():\n",
-      "    global guessed_words, lives, wrong_letters\n",
-      "    print('Word:', ' '.join(guessed_word), ' : Lives =', lives, ', wrong guesses:', ' '.join(sorted(wrong_letters)))\n",
+      "    global discovered, lives, wrong_letters\n",
+      "    print('Word:', ' '.join(discovered), ' : Lives =', lives, ', wrong guesses:', ' '.join(sorted(wrong_letters)))\n",
       "    guess = input('Enter letter: ').strip().lower()[0]\n",
       "    if guess in target:\n",
-      "        updated_guessed_word(guessed_word, guess)\n",
+      "        updated_discovered_word(discovered, guess)\n",
       "    else:\n",
       "        lives -= 1\n",
-      "        wrong_letters += [guess]"
+      "        if guess not in wrong_letters:\n",
+      "            wrong_letters += [guess]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 41
+     "prompt_number": 15
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
       "def play_game():\n",
-      "    global guessed_word, lives\n",
+      "    global discovered, lives\n",
       "    initialise()\n",
       "    game_finished = False\n",
       "    do_turn()\n",
       "    while not game_finished:\n",
-      "        if '_' not in guessed_word:\n",
-      "            print('You won!')\n",
+      "        if '_' not in discovered:\n",
+      "            print('You won! The word was', target)\n",
       "            game_finished = True\n",
       "        elif lives <= 0:\n",
       "            print('You lost. The word was', target)\n",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 36
+     "prompt_number": 16
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ _  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ e _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ e  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: a\n"
+        "Enter letter: s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ _ _ e _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ e  : Lives = 9 , wrong guesses: s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: t\n"
+        "Enter letter: a\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ _ _ e t _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ e  : Lives = 8 , wrong guesses: a s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _ e t _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ e  : Lives = 7 , wrong guesses: a o s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _ e t _ _  : Lives = 9 , wrong guesses: i\n"
-       ]
-      },
-      {
-       "name": "stdout",
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Enter letter: n\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Word: a _ _ o _ e t _ _  : Lives = 8 , wrong guesses: i n\n"
+        "Word: _ i _ e  : Lives = 7 , wrong guesses: a o s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: s\n"
+        "Enter letter: t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _ e t _ _  : Lives = 7 , wrong guesses: i n s\n"
+        "Word: _ i _ e  : Lives = 6 , wrong guesses: a o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: h\n"
+        "Enter letter: n\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _ e t _ _  : Lives = 6 , wrong guesses: h i n s\n"
+        "Word: _ i _ e  : Lives = 5 , wrong guesses: a n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: r\n"
+        "Enter letter: m\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a r _ o r e t _ _  : Lives = 6 , wrong guesses: h i n s\n"
+        "Word: _ i _ e  : Lives = 4 , wrong guesses: a m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: g\n"
+        "Enter letter: l\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a r _ o r e t _ _  : Lives = 5 , wrong guesses: g h i n s\n"
+        "Word: _ i _ e  : Lives = 3 , wrong guesses: a l m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: r\n"
+        "Enter letter: c\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a r _ o r e t _ _  : Lives = 5 , wrong guesses: g h i n s\n"
+        "Word: _ i _ e  : Lives = 2 , wrong guesses: a c l m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a r _ o r e t _ _  : Lives = 4 , wrong guesses: d g h i n s\n"
-       ]
-      },
-      {
-       "name": "stdout",
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Enter letter: l\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Word: a r _ o r e t _ _  : Lives = 3 , wrong guesses: d g h i l n s\n"
+        "Word: _ i d e  : Lives = 2 , wrong guesses: a c l m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: u\n"
+        "Enter letter: h\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a r _ o r e t u _  : Lives = 3 , wrong guesses: d g h i l n s\n"
+        "Word: _ i d e  : Lives = 1 , wrong guesses: a c h l m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a r b o r e t u _  : Lives = 3 , wrong guesses: d g h i l n s\n"
-       ]
-      },
-      {
-       "name": "stdout",
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Enter letter: m\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "You won!\n"
+        "You lost. The word was ride\n"
        ]
       }
      ],
-     "prompt_number": 42
+     "prompt_number": 20
     },
     {
      "cell_type": "code",
      "input": [],
      "language": "python",
      "metadata": {},
-     "outputs": []
+     "outputs": [],
+     "prompt_number": 17
     }
    ],
    "metadata": {}