{
"metadata": {
"name": "",
- "signature": "sha256:668f52295bb8e65ad2ddd9293b48c435ea624c27afc5b1fec5862539fb575f75"
+ "signature": "sha256:65af1805536aa8ac4200804af5d4b4d0e55c2eb86d74b2cf3f31a632b3aeccf8"
},
"nbformat": 3,
"nbformat_minor": 0,
{
"metadata": {},
"output_type": "pyout",
- "prompt_number": 14,
+ "prompt_number": 7,
"text": [
- "'rebounds'"
+ "'goitre'"
]
}
],
- "prompt_number": 14
+ "prompt_number": 7
},
{
"cell_type": "code",
"output_type": "stream",
"stream": "stdout",
"text": [
- "Enter letter: sdfsdfs\n"
+ "Enter letter: r\n"
]
},
{
"output_type": "pyout",
"prompt_number": 9,
"text": [
- "'s'"
+ "'r'"
]
}
],
"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": 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": {},
{
"metadata": {},
"output_type": "pyout",
- "prompt_number": 12,
+ "prompt_number": 27,
"text": [
- "[]"
+ "[2, 3]"
]
}
],
- "prompt_number": 12
+ "prompt_number": 27
},
{
"cell_type": "code",
{
"metadata": {},
"output_type": "pyout",
- "prompt_number": 15,
+ "prompt_number": 12,
"text": [
- "['_', 'e', '_', '_', '_', '_']"
+ "['_', '_', '_', '_', '_', 'e']"
]
}
],
- "prompt_number": 15
+ "prompt_number": 12
},
{
"cell_type": "code",
"language": "python",
"metadata": {},
"outputs": [],
- "prompt_number": 18
+ "prompt_number": 13
},
{
"cell_type": "code",
"language": "python",
"metadata": {},
"outputs": [],
- "prompt_number": 19
+ "prompt_number": 14
},
{
"cell_type": "code",
"language": "python",
"metadata": {},
"outputs": [],
- "prompt_number": 27
+ "prompt_number": 15
},
{
"cell_type": "code",
"language": "python",
"metadata": {},
"outputs": [],
- "prompt_number": 25
+ "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: _ e _ _ a _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n"
+ "Word: _ _ _ e : Lives = 9 , wrong guesses: s\n"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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"
]
},
{
"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<ipython-input-54-1beb96467341>\u001b[0m in \u001b[0;36m<module>\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<ipython-input-47-8f8ddb756c32>\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<ipython-input-18-572b4e76dcf5>\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",
"input": [],
"language": "python",
"metadata": {},
- "outputs": []
+ "outputs": [],
+ "prompt_number": 17
}
],
"metadata": {}