+++ /dev/null
-{
- "metadata": {
- "name": "",
- "signature": "sha256:65af1805536aa8ac4200804af5d4b4d0e55c2eb86d74b2cf3f31a632b3aeccf8"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "import re\n",
- "import random"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 1
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "WORDS = [w.strip() for w in open('/usr/share/dict/british-english').readlines() \n",
- " if re.match(r'^[a-z]*$', w.strip())]"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 2
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "STARTING_LIVES = 10\n",
- "lives = 0"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 3
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "wrong_letters = []"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 4
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "len(WORDS)"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 5,
- "text": [
- "62856"
- ]
- }
- ],
- "prompt_number": 5
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "WORDS[30000:30010]"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 6,
- "text": [
- "['jotted',\n",
- " 'jotting',\n",
- " 'jottings',\n",
- " 'joule',\n",
- " 'joules',\n",
- " 'jounce',\n",
- " 'jounced',\n",
- " 'jounces',\n",
- " 'jouncing',\n",
- " 'journal']"
- ]
- }
- ],
- "prompt_number": 6
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "target = random.choice(WORDS)\n",
- "target"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 7,
- "text": [
- "'goitre'"
- ]
- }
- ],
- "prompt_number": 7
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "discovered = list('_' * len(target))\n",
- "discovered"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 8,
- "text": [
- "['_', '_', '_', '_', '_', '_']"
- ]
- }
- ],
- "prompt_number": 8
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "letter = input('Enter letter: ').strip().lower()[0]\n",
- "letter"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: r\n"
- ]
- },
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 9,
- "text": [
- "'r'"
- ]
- }
- ],
- "prompt_number": 9
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "def find_all_explicit(string, letter):\n",
- " locations = []\n",
- " starting=0\n",
- " location = string.find(letter)\n",
- " while location > -1:\n",
- " locations += [location]\n",
- " starting = location + 1\n",
- " location = string.find(letter, starting)\n",
- " return locations"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "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', 'p')"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 27,
- "text": [
- "[2, 3]"
- ]
- }
- ],
- "prompt_number": 27
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "guessed_letter = 'e'\n",
- "locations = find_all(target, guessed_letter)\n",
- "for location in locations:\n",
- " discovered[location] = guessed_letter\n",
- "discovered"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [
- {
- "metadata": {},
- "output_type": "pyout",
- "prompt_number": 12,
- "text": [
- "['_', '_', '_', '_', '_', 'e']"
- ]
- }
- ],
- "prompt_number": 12
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "def updated_discovered_word(discovered, guessed_letter):\n",
- " locations = find_all(target, guessed_letter)\n",
- " for location in locations:\n",
- " discovered[location] = guessed_letter\n",
- " return discovered"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 13
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "def initialise():\n",
- " global lives, target, discovered, wrong_letters\n",
- " lives = STARTING_LIVES\n",
- " target = random.choice(WORDS)\n",
- " discovered = list('_' * len(target))\n",
- " wrong_letters = []"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 14
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "def do_turn():\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_discovered_word(discovered, guess)\n",
- " else:\n",
- " lives -= 1\n",
- " if guess not in wrong_letters:\n",
- " wrong_letters += [guess]"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 15
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "def play_game():\n",
- " global discovered, lives\n",
- " initialise()\n",
- " game_finished = False\n",
- " do_turn()\n",
- " while not game_finished:\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",
- " game_finished = True\n",
- " else:\n",
- " do_turn()"
- ],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 16
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [
- "play_game()"
- ],
- "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: e\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ _ _ e : Lives = 10 , wrong guesses: \n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: s\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ _ _ e : Lives = 9 , wrong guesses: s\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: a\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ _ _ e : Lives = 8 , wrong guesses: a s\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: o\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ _ _ e : Lives = 7 , wrong guesses: a o s\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: i\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i _ e : Lives = 7 , wrong guesses: a o s\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: t\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i _ e : Lives = 6 , wrong guesses: a o s t\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: n\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i _ e : Lives = 5 , wrong guesses: a n o s t\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: m\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i _ e : Lives = 4 , wrong guesses: a m n o s t\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: l\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i _ e : Lives = 3 , wrong guesses: a l m n o s t\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: c\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i _ e : Lives = 2 , wrong guesses: a c l m n o s t\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: d\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i d e : Lives = 2 , wrong guesses: a c l m n o s t\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: h\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Word: _ i d e : Lives = 1 , wrong guesses: a c h l m n o s t\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "Enter letter: b\n"
- ]
- },
- {
- "output_type": "stream",
- "stream": "stdout",
- "text": [
- "You lost. The word was ride\n"
- ]
- }
- ],
- "prompt_number": 20
- },
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [],
- "language": "python",
- "metadata": {},
- "outputs": [],
- "prompt_number": 17
- }
- ],
- "metadata": {}
- }
- ]
-}
\ No newline at end of file