{ "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": {} } ] }