4 "signature": "sha256:3fd62f8c6cf4619b87bb367305e68080edd846095261b09f98699554a3e60841"
27 "WORDS = [w.strip() for w in open('/usr/share/dict/british-english').readlines() \n",
28 " if re.match(r'^[a-z]*$', w.strip())]"
39 "STARTING_LIVES = 10\n",
69 "output_type": "pyout",
89 "output_type": "pyout",
111 "target = random.choice(WORDS)\n",
114 "language": "python",
119 "output_type": "pyout",
132 "discovered = list('_' * len(target))\n",
135 "language": "python",
140 "output_type": "pyout",
143 "['_', '_', '_', '_', '_', '_']"
153 "letter = input('Enter letter: ').strip().lower()[0]\n",
156 "language": "python",
161 "output_type": "stream",
164 "Enter letter: sdfsdfs\n"
169 "output_type": "pyout",
182 "def find_all(string, letter):\n",
185 " location = string.find(letter)\n",
186 " while location > -1:\n",
187 " locations += [location]\n",
188 " starting = location + 1\n",
189 " location = string.find(letter, starting)\n",
192 "language": "python",
201 "find_all('happy', 'q')"
203 "language": "python",
208 "output_type": "pyout",
221 "guessed_letter = 'e'\n",
222 "locations = find_all(target, guessed_letter)\n",
223 "for location in locations:\n",
224 " discovered[location] = guessed_letter\n",
227 "language": "python",
232 "output_type": "pyout",
235 "['_', 'e', '_', '_', '_', '_']"
245 "def updated_discovered_word(discovered, guessed_letter):\n",
246 " locations = find_all(target, guessed_letter)\n",
247 " for location in locations:\n",
248 " discovered[location] = guessed_letter\n",
251 "language": "python",
260 "def initialise():\n",
261 " global lives, target, discovered, wrong_letters\n",
262 " lives = STARTING_LIVES\n",
263 " target = random.choice(WORDS)\n",
264 " discovered = list('_' * len(target))\n",
265 " wrong_letters = []"
267 "language": "python",
277 " global discovered, lives, wrong_letters\n",
278 " print('Word:', ' '.join(discovered), ' : Lives =', lives, ', wrong guesses:', ' '.join(sorted(wrong_letters)))\n",
279 " guess = input('Enter letter: ').strip().lower()[0]\n",
280 " if guess in target:\n",
281 " updated_discovered_word(discovered, guess)\n",
284 " if guess not in wrong_letters:\n",
285 " wrong_letters += [guess]"
287 "language": "python",
296 "def play_game():\n",
297 " global discovered, lives\n",
299 " game_finished = False\n",
301 " while not game_finished:\n",
302 " if '_' not in discovered:\n",
303 " print('You won! The word was', target)\n",
304 " game_finished = True\n",
305 " elif lives <= 0:\n",
306 " print('You lost. The word was', target)\n",
307 " game_finished = True\n",
311 "language": "python",
322 "language": "python",
326 "output_type": "stream",
329 "Word: _ _ _ _ _ _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n"
334 "output_type": "stream",
341 "output_type": "stream",
344 "Word: _ e _ _ _ _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n"
349 "output_type": "stream",
356 "output_type": "stream",
359 "Word: _ e _ _ a _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n"
364 "output_type": "stream",
371 "output_type": "stream",
374 "Word: _ e _ _ a _ _ _ _ _ i _ i _ : Lives = 10 , wrong guesses: \n"
379 "output_type": "stream",
386 "output_type": "stream",
389 "Word: _ e _ _ a _ _ _ o _ i _ i _ : Lives = 10 , wrong guesses: \n"
394 "output_type": "stream",
401 "output_type": "stream",
404 "Word: _ e _ _ a _ _ _ o _ i t i _ : Lives = 10 , wrong guesses: \n"
409 "output_type": "stream",
416 "output_type": "stream",
419 "Word: _ e r _ a _ _ r o _ i t i _ : Lives = 10 , wrong guesses: \n"
424 "output_type": "stream",
431 "output_type": "stream",
434 "Word: _ e r _ a _ _ r o _ i t i _ : Lives = 9 , wrong guesses: n\n"
439 "output_type": "stream",
446 "output_type": "stream",
449 "Word: _ e r _ a _ _ r o _ i t i _ : Lives = 8 , wrong guesses: n s\n"
454 "output_type": "stream",
461 "output_type": "stream",
464 "Word: h e r _ a _ h r o _ i t i _ : Lives = 8 , wrong guesses: n s\n"
469 "output_type": "stream",
476 "output_type": "stream",
479 "Word: h e r _ a _ h r o _ i t i c : Lives = 8 , wrong guesses: n s\n"
484 "output_type": "stream",
491 "output_type": "stream",
494 "Word: h e r _ a _ h r o _ i t i c : Lives = 8 , wrong guesses: n s\n"
499 "output_type": "stream",
506 "output_type": "stream",
509 "Word: h e r m a _ h r o _ i t i c : Lives = 8 , wrong guesses: n s\n"
514 "output_type": "stream",
521 "output_type": "stream",
524 "Word: h e r m a p h r o _ i t i c : Lives = 8 , wrong guesses: n s\n"
529 "output_type": "stream",
536 "output_type": "stream",
539 "You won! The word was hermaphroditic\n"
550 " def __init__(self, target, lives=STARTING_LIVES):\n",
551 " self.lives = lives\n",
552 " self.target = target\n",
553 " self.discovered = list('_' * len(target))\n",
554 " self.wrong_letters = []\n",
555 " self.game_finished = False\n",
556 " self.game_won = False\n",
557 " self.game_lost = False\n",
559 " def find_all(self, letter):\n",
562 " location = self.target.find(letter)\n",
563 " while location > -1:\n",
564 " locations += [location]\n",
565 " starting = location + 1\n",
566 " location = self.target.find(letter, starting)\n",
567 " return locations\n",
569 " def updated_discovered_word(self, guessed_letter):\n",
570 " locations = find_all(guessed_letter)\n",
571 " for location in locations:\n",
572 " self.discovered[location] = guessed_letter\n",
573 " return self.discovered\n",
575 " def do_turn(self):\n",
576 " print('Word:', ' '.join(self.discovered), \n",
577 " ' : Lives =', self.lives, \n",
578 " ', wrong guesses:', ' '.join(sorted(self.wrong_letters)))\n",
579 " guess = input('Enter letter: ').strip().lower()[0]\n",
580 " if guess in self.target:\n",
581 " updated_discovered_word(self, guess)\n",
583 " self.lives -= 1\n",
584 " if guess not in self.wrong_letters:\n",
585 " self.wrong_letters += [guess]\n",
586 " if self.lives == 0:\n",
587 " self.game_finished = True\n",
588 " self.game_lost = True\n",
589 " if '_' not in self.discovered:\n",
590 " self.game_finished = True\n",
591 " self.game_won = True\n",
593 " def play_game(self):\n",
595 " while not self.game_finished:\n",
596 " if self.game_won:\n",
597 " print('You won! The word was', self.target)\n",
598 " elif self.game_lost:\n",
599 " print('You lost. The word was', self.target)\n",
602 " return self.game_won"
604 "language": "python",
613 "g = Game(random.choice(WORDS))"
615 "language": "python",
626 "language": "python",
631 "output_type": "pyout",
646 "language": "python",
651 "output_type": "pyout",
654 "['_', '_', '_', '_', '_', '_', '_', '_', '_', '_']"
666 "language": "python",
670 "output_type": "stream",
673 "Word: _ _ _ _ _ _ _ _ _ _ : Lives = 10 , wrong guesses: \n"
678 "output_type": "stream",
693 "language": "python",
698 "output_type": "pyout",
713 "language": "python",
718 "output_type": "pyout",
733 "language": "python",
737 "output_type": "stream",
740 "Word: _ _ _ _ _ _ _ _ _ _ : Lives = 9 , wrong guesses: x\n"
745 "output_type": "stream",
752 "ename": "TypeError",
753 "evalue": "'Game' object does not support item assignment",
754 "output_type": "pyerr",
756 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
757 "\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",
758 "\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",
759 "\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",
760 "\u001b[1;31mTypeError\u001b[0m: 'Game' object does not support item assignment"
770 "language": "python",