X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=hangman-setter.ipynb;h=aa2487e5575276df6220ca80dcabaed693e1fce6;hb=864a130f1e84240718ed43f5898c19e1e4c1fd31;hp=bcd2db902777a3330a00703ff12fd37901d25b72;hpb=57413629de6f67a333a80f5094d631ee2d5a6c6f;p=cas-master-teacher-training.git diff --git a/hangman-setter.ipynb b/hangman-setter.ipynb index bcd2db9..aa2487e 100644 --- a/hangman-setter.ipynb +++ b/hangman-setter.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:668f52295bb8e65ad2ddd9293b48c435ea624c27afc5b1fec5862539fb575f75" + "signature": "sha256:65af1805536aa8ac4200804af5d4b4d0e55c2eb86d74b2cf3f31a632b3aeccf8" }, "nbformat": 3, "nbformat_minor": 0, @@ -117,13 +117,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 14, + "prompt_number": 7, "text": [ - "'rebounds'" + "'goitre'" ] } ], - "prompt_number": 14 + "prompt_number": 7 }, { "cell_type": "code", @@ -161,7 +161,7 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: sdfsdfs\n" + "Enter letter: r\n" ] }, { @@ -169,7 +169,7 @@ "output_type": "pyout", "prompt_number": 9, "text": [ - "'s'" + "'r'" ] } ], @@ -179,7 +179,7 @@ "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", @@ -192,13 +192,25 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 11 + "prompt_number": 25 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "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', 'q')" + "find_all('happy', 'p')" ], "language": "python", "metadata": {}, @@ -206,13 +218,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 12, + "prompt_number": 27, "text": [ - "[]" + "[2, 3]" ] } ], - "prompt_number": 12 + "prompt_number": 27 }, { "cell_type": "code", @@ -230,13 +242,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 15, + "prompt_number": 12, "text": [ - "['_', 'e', '_', '_', '_', '_']" + "['_', '_', '_', '_', '_', 'e']" ] } ], - "prompt_number": 15 + "prompt_number": 12 }, { "cell_type": "code", @@ -251,7 +263,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 18 + "prompt_number": 13 }, { "cell_type": "code", @@ -267,7 +279,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 19 + "prompt_number": 14 }, { "cell_type": "code", @@ -287,7 +299,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 27 + "prompt_number": 15 }, { "cell_type": "code", @@ -311,7 +323,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 25 + "prompt_number": 16 }, { "cell_type": "code", @@ -326,7 +338,7 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ _ _ _ _ _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n" + "Word: _ _ _ _ : Lives = 10 , wrong guesses: \n" ] }, { @@ -341,7 +353,7 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ e _ _ _ _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n" + "Word: _ _ _ e : Lives = 10 , wrong guesses: \n" ] }, { @@ -349,14 +361,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: a\n" + "Enter letter: s\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ e _ _ a _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n" + "Word: _ _ _ e : Lives = 9 , wrong guesses: s\n" ] }, { @@ -364,14 +376,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: i\n" + "Enter letter: a\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ e _ _ a _ _ _ _ _ i _ i _ : Lives = 10 , wrong guesses: \n" + "Word: _ _ _ e : Lives = 8 , wrong guesses: a s\n" ] }, { @@ -386,7 +398,7 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ e _ _ a _ _ _ o _ i _ i _ : Lives = 10 , wrong guesses: \n" + "Word: _ _ _ e : Lives = 7 , wrong guesses: a o s\n" ] }, { @@ -394,14 +406,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: t\n" + "Enter letter: i\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ e _ _ a _ _ _ o _ i t i _ : Lives = 10 , wrong guesses: \n" + "Word: _ i _ e : Lives = 7 , wrong guesses: a o s\n" ] }, { @@ -409,14 +421,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: r\n" + "Enter letter: t\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ e r _ a _ _ r o _ i t i _ : Lives = 10 , wrong guesses: \n" + "Word: _ i _ e : Lives = 6 , wrong guesses: a o s t\n" ] }, { @@ -431,7 +443,7 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Word: _ e r _ a _ _ r o _ i t i _ : Lives = 9 , wrong guesses: n\n" + "Word: _ i _ e : Lives = 5 , wrong guesses: a n o s t\n" ] }, { @@ -439,29 +451,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: s\n" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Word: _ e r _ a _ _ r o _ i t i _ : Lives = 8 , wrong guesses: n s\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "Enter letter: h\n" + "Enter letter: m\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: h e r _ a _ h r o _ i t i _ : Lives = 8 , wrong guesses: n s\n" + "Word: _ i _ e : Lives = 4 , wrong guesses: a m n o s t\n" ] }, { @@ -469,14 +466,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: c\n" + "Enter letter: l\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: h e r _ a _ h r o _ i t i c : Lives = 8 , wrong guesses: n s\n" + "Word: _ i _ e : Lives = 3 , wrong guesses: a l m n o s t\n" ] }, { @@ -491,7 +488,7 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Word: h e r _ a _ h r o _ i t i c : Lives = 8 , wrong guesses: n s\n" + "Word: _ i _ e : Lives = 2 , wrong guesses: a c l m n o s t\n" ] }, { @@ -499,14 +496,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: m\n" + "Enter letter: d\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: h e r m a _ h r o _ i t i c : Lives = 8 , wrong guesses: n s\n" + "Word: _ i d e : Lives = 2 , wrong guesses: a c l m n o s t\n" ] }, { @@ -514,14 +511,14 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: p\n" + "Enter letter: h\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "Word: h e r m a p h r o _ i t i c : Lives = 8 , wrong guesses: n s\n" + "Word: _ i d e : Lives = 1 , wrong guesses: a c h l m n o s t\n" ] }, { @@ -529,239 +526,18 @@ "output_type": "stream", "stream": "stdout", "text": [ - "Enter letter: d\n" + "Enter letter: b\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "You won! The word was hermaphroditic\n" + "You lost. The word was ride\n" ] } ], - "prompt_number": 30 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "class Game:\n", - " def __init__(self, target, lives=STARTING_LIVES):\n", - " self.lives = lives\n", - " self.target = target\n", - " self.discovered = list('_' * len(target))\n", - " self.wrong_letters = []\n", - " self.game_finished = False\n", - " self.game_won = False\n", - " self.game_lost = False\n", - " \n", - " def find_all(self, letter):\n", - " locations = []\n", - " starting=0\n", - " location = self.target.find(letter)\n", - " while location > -1:\n", - " locations += [location]\n", - " starting = location + 1\n", - " location = self.target.find(letter, starting)\n", - " return locations\n", - " \n", - " def updated_discovered_word(self, guessed_letter):\n", - " locations = find_all(self, guessed_letter)\n", - " for location in locations:\n", - " self.discovered[location] = guessed_letter\n", - " return self.discovered\n", - " \n", - " def do_turn(self):\n", - " print('Word:', ' '.join(self.discovered), \n", - " ' : Lives =', self.lives, \n", - " ', wrong guesses:', ' '.join(sorted(self.wrong_letters)))\n", - " guess = input('Enter letter: ').strip().lower()[0]\n", - " if guess in self.target:\n", - " updated_discovered_word(self, guess)\n", - " else:\n", - " self.lives -= 1\n", - " if guess not in self.wrong_letters:\n", - " self.wrong_letters += [guess]\n", - " if self.lives == 0:\n", - " self.game_finished = True\n", - " self.game_lost = True\n", - " if '_' not in self.discovered:\n", - " self.game_finished = True\n", - " self.game_won = True\n", - " \n", - " def play_game(self):\n", - " do_turn()\n", - " while not self.game_finished:\n", - " if self.game_won:\n", - " print('You won! The word was', self.target)\n", - " elif self.game_lost:\n", - " print('You lost. The word was', self.target)\n", - " else:\n", - " do_turn()\n", - " return self.game_won" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 47 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "g = Game(random.choice(WORDS))" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 48 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "g.target" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 49, - "text": [ - "'paintbrush'" - ] - } - ], - "prompt_number": 49 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "g.discovered" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 50, - "text": [ - "['_', '_', '_', '_', '_', '_', '_', '_', '_', '_']" - ] - } - ], - "prompt_number": 50 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "g.do_turn()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Word: _ _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "Enter letter: x\n" - ] - } - ], - "prompt_number": 51 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "g.lives" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 52, - "text": [ - "9" - ] - } - ], - "prompt_number": 52 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "g.wrong_letters" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 53, - "text": [ - "['x']" - ] - } - ], - "prompt_number": 53 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "g.do_turn()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Word: _ _ _ _ _ _ _ _ _ _ : Lives = 9 , wrong guesses: x\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "stream": "stdout", - "text": [ - "Enter letter: t\n" - ] - }, - { - "ename": "TypeError", - "evalue": "'Game' object does not support item assignment", - "output_type": "pyerr", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdo_turn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m\u001b[0m in \u001b[0;36mdo_turn\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[0mguess\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Enter letter: '\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 32\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mguess\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtarget\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 33\u001b[1;33m \u001b[0mupdated_discovered_word\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mguess\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 34\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlives\u001b[0m \u001b[1;33m-=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36mupdated_discovered_word\u001b[1;34m(discovered, guessed_letter)\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mlocations\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfind_all\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtarget\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mguessed_letter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mlocation\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlocations\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mdiscovered\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlocation\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mguessed_letter\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mdiscovered\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mTypeError\u001b[0m: 'Game' object does not support item assignment" - ] - } - ], - "prompt_number": 54 + "prompt_number": 20 }, { "cell_type": "code", @@ -769,7 +545,8 @@ "input": [], "language": "python", "metadata": {}, - "outputs": [] + "outputs": [], + "prompt_number": 17 } ], "metadata": {}