Finished for a while
[cas-master-teacher-training.git] / hangman-setter.ipynb
1 {
2 "metadata": {
3 "name": "",
4 "signature": "sha256:65af1805536aa8ac4200804af5d4b4d0e55c2eb86d74b2cf3f31a632b3aeccf8"
5 },
6 "nbformat": 3,
7 "nbformat_minor": 0,
8 "worksheets": [
9 {
10 "cells": [
11 {
12 "cell_type": "code",
13 "collapsed": false,
14 "input": [
15 "import re\n",
16 "import random"
17 ],
18 "language": "python",
19 "metadata": {},
20 "outputs": [],
21 "prompt_number": 1
22 },
23 {
24 "cell_type": "code",
25 "collapsed": false,
26 "input": [
27 "WORDS = [w.strip() for w in open('/usr/share/dict/british-english').readlines() \n",
28 " if re.match(r'^[a-z]*$', w.strip())]"
29 ],
30 "language": "python",
31 "metadata": {},
32 "outputs": [],
33 "prompt_number": 2
34 },
35 {
36 "cell_type": "code",
37 "collapsed": false,
38 "input": [
39 "STARTING_LIVES = 10\n",
40 "lives = 0"
41 ],
42 "language": "python",
43 "metadata": {},
44 "outputs": [],
45 "prompt_number": 3
46 },
47 {
48 "cell_type": "code",
49 "collapsed": false,
50 "input": [
51 "wrong_letters = []"
52 ],
53 "language": "python",
54 "metadata": {},
55 "outputs": [],
56 "prompt_number": 4
57 },
58 {
59 "cell_type": "code",
60 "collapsed": false,
61 "input": [
62 "len(WORDS)"
63 ],
64 "language": "python",
65 "metadata": {},
66 "outputs": [
67 {
68 "metadata": {},
69 "output_type": "pyout",
70 "prompt_number": 5,
71 "text": [
72 "62856"
73 ]
74 }
75 ],
76 "prompt_number": 5
77 },
78 {
79 "cell_type": "code",
80 "collapsed": false,
81 "input": [
82 "WORDS[30000:30010]"
83 ],
84 "language": "python",
85 "metadata": {},
86 "outputs": [
87 {
88 "metadata": {},
89 "output_type": "pyout",
90 "prompt_number": 6,
91 "text": [
92 "['jotted',\n",
93 " 'jotting',\n",
94 " 'jottings',\n",
95 " 'joule',\n",
96 " 'joules',\n",
97 " 'jounce',\n",
98 " 'jounced',\n",
99 " 'jounces',\n",
100 " 'jouncing',\n",
101 " 'journal']"
102 ]
103 }
104 ],
105 "prompt_number": 6
106 },
107 {
108 "cell_type": "code",
109 "collapsed": false,
110 "input": [
111 "target = random.choice(WORDS)\n",
112 "target"
113 ],
114 "language": "python",
115 "metadata": {},
116 "outputs": [
117 {
118 "metadata": {},
119 "output_type": "pyout",
120 "prompt_number": 7,
121 "text": [
122 "'goitre'"
123 ]
124 }
125 ],
126 "prompt_number": 7
127 },
128 {
129 "cell_type": "code",
130 "collapsed": false,
131 "input": [
132 "discovered = list('_' * len(target))\n",
133 "discovered"
134 ],
135 "language": "python",
136 "metadata": {},
137 "outputs": [
138 {
139 "metadata": {},
140 "output_type": "pyout",
141 "prompt_number": 8,
142 "text": [
143 "['_', '_', '_', '_', '_', '_']"
144 ]
145 }
146 ],
147 "prompt_number": 8
148 },
149 {
150 "cell_type": "code",
151 "collapsed": false,
152 "input": [
153 "letter = input('Enter letter: ').strip().lower()[0]\n",
154 "letter"
155 ],
156 "language": "python",
157 "metadata": {},
158 "outputs": [
159 {
160 "name": "stdout",
161 "output_type": "stream",
162 "stream": "stdout",
163 "text": [
164 "Enter letter: r\n"
165 ]
166 },
167 {
168 "metadata": {},
169 "output_type": "pyout",
170 "prompt_number": 9,
171 "text": [
172 "'r'"
173 ]
174 }
175 ],
176 "prompt_number": 9
177 },
178 {
179 "cell_type": "code",
180 "collapsed": false,
181 "input": [
182 "def find_all_explicit(string, letter):\n",
183 " locations = []\n",
184 " starting=0\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",
190 " return locations"
191 ],
192 "language": "python",
193 "metadata": {},
194 "outputs": [],
195 "prompt_number": 25
196 },
197 {
198 "cell_type": "code",
199 "collapsed": false,
200 "input": [
201 "def find_all(string, letter):\n",
202 " return [p for p, l in enumerate(string) if l == letter]"
203 ],
204 "language": "python",
205 "metadata": {},
206 "outputs": [],
207 "prompt_number": 26
208 },
209 {
210 "cell_type": "code",
211 "collapsed": false,
212 "input": [
213 "find_all('happy', 'p')"
214 ],
215 "language": "python",
216 "metadata": {},
217 "outputs": [
218 {
219 "metadata": {},
220 "output_type": "pyout",
221 "prompt_number": 27,
222 "text": [
223 "[2, 3]"
224 ]
225 }
226 ],
227 "prompt_number": 27
228 },
229 {
230 "cell_type": "code",
231 "collapsed": false,
232 "input": [
233 "guessed_letter = 'e'\n",
234 "locations = find_all(target, guessed_letter)\n",
235 "for location in locations:\n",
236 " discovered[location] = guessed_letter\n",
237 "discovered"
238 ],
239 "language": "python",
240 "metadata": {},
241 "outputs": [
242 {
243 "metadata": {},
244 "output_type": "pyout",
245 "prompt_number": 12,
246 "text": [
247 "['_', '_', '_', '_', '_', 'e']"
248 ]
249 }
250 ],
251 "prompt_number": 12
252 },
253 {
254 "cell_type": "code",
255 "collapsed": false,
256 "input": [
257 "def updated_discovered_word(discovered, guessed_letter):\n",
258 " locations = find_all(target, guessed_letter)\n",
259 " for location in locations:\n",
260 " discovered[location] = guessed_letter\n",
261 " return discovered"
262 ],
263 "language": "python",
264 "metadata": {},
265 "outputs": [],
266 "prompt_number": 13
267 },
268 {
269 "cell_type": "code",
270 "collapsed": false,
271 "input": [
272 "def initialise():\n",
273 " global lives, target, discovered, wrong_letters\n",
274 " lives = STARTING_LIVES\n",
275 " target = random.choice(WORDS)\n",
276 " discovered = list('_' * len(target))\n",
277 " wrong_letters = []"
278 ],
279 "language": "python",
280 "metadata": {},
281 "outputs": [],
282 "prompt_number": 14
283 },
284 {
285 "cell_type": "code",
286 "collapsed": false,
287 "input": [
288 "def do_turn():\n",
289 " global discovered, lives, wrong_letters\n",
290 " print('Word:', ' '.join(discovered), ' : Lives =', lives, ', wrong guesses:', ' '.join(sorted(wrong_letters)))\n",
291 " guess = input('Enter letter: ').strip().lower()[0]\n",
292 " if guess in target:\n",
293 " updated_discovered_word(discovered, guess)\n",
294 " else:\n",
295 " lives -= 1\n",
296 " if guess not in wrong_letters:\n",
297 " wrong_letters += [guess]"
298 ],
299 "language": "python",
300 "metadata": {},
301 "outputs": [],
302 "prompt_number": 15
303 },
304 {
305 "cell_type": "code",
306 "collapsed": false,
307 "input": [
308 "def play_game():\n",
309 " global discovered, lives\n",
310 " initialise()\n",
311 " game_finished = False\n",
312 " do_turn()\n",
313 " while not game_finished:\n",
314 " if '_' not in discovered:\n",
315 " print('You won! The word was', target)\n",
316 " game_finished = True\n",
317 " elif lives <= 0:\n",
318 " print('You lost. The word was', target)\n",
319 " game_finished = True\n",
320 " else:\n",
321 " do_turn()"
322 ],
323 "language": "python",
324 "metadata": {},
325 "outputs": [],
326 "prompt_number": 16
327 },
328 {
329 "cell_type": "code",
330 "collapsed": false,
331 "input": [
332 "play_game()"
333 ],
334 "language": "python",
335 "metadata": {},
336 "outputs": [
337 {
338 "output_type": "stream",
339 "stream": "stdout",
340 "text": [
341 "Word: _ _ _ _ : Lives = 10 , wrong guesses: \n"
342 ]
343 },
344 {
345 "name": "stdout",
346 "output_type": "stream",
347 "stream": "stdout",
348 "text": [
349 "Enter letter: e\n"
350 ]
351 },
352 {
353 "output_type": "stream",
354 "stream": "stdout",
355 "text": [
356 "Word: _ _ _ e : Lives = 10 , wrong guesses: \n"
357 ]
358 },
359 {
360 "name": "stdout",
361 "output_type": "stream",
362 "stream": "stdout",
363 "text": [
364 "Enter letter: s\n"
365 ]
366 },
367 {
368 "output_type": "stream",
369 "stream": "stdout",
370 "text": [
371 "Word: _ _ _ e : Lives = 9 , wrong guesses: s\n"
372 ]
373 },
374 {
375 "name": "stdout",
376 "output_type": "stream",
377 "stream": "stdout",
378 "text": [
379 "Enter letter: a\n"
380 ]
381 },
382 {
383 "output_type": "stream",
384 "stream": "stdout",
385 "text": [
386 "Word: _ _ _ e : Lives = 8 , wrong guesses: a s\n"
387 ]
388 },
389 {
390 "name": "stdout",
391 "output_type": "stream",
392 "stream": "stdout",
393 "text": [
394 "Enter letter: o\n"
395 ]
396 },
397 {
398 "output_type": "stream",
399 "stream": "stdout",
400 "text": [
401 "Word: _ _ _ e : Lives = 7 , wrong guesses: a o s\n"
402 ]
403 },
404 {
405 "name": "stdout",
406 "output_type": "stream",
407 "stream": "stdout",
408 "text": [
409 "Enter letter: i\n"
410 ]
411 },
412 {
413 "output_type": "stream",
414 "stream": "stdout",
415 "text": [
416 "Word: _ i _ e : Lives = 7 , wrong guesses: a o s\n"
417 ]
418 },
419 {
420 "name": "stdout",
421 "output_type": "stream",
422 "stream": "stdout",
423 "text": [
424 "Enter letter: t\n"
425 ]
426 },
427 {
428 "output_type": "stream",
429 "stream": "stdout",
430 "text": [
431 "Word: _ i _ e : Lives = 6 , wrong guesses: a o s t\n"
432 ]
433 },
434 {
435 "name": "stdout",
436 "output_type": "stream",
437 "stream": "stdout",
438 "text": [
439 "Enter letter: n\n"
440 ]
441 },
442 {
443 "output_type": "stream",
444 "stream": "stdout",
445 "text": [
446 "Word: _ i _ e : Lives = 5 , wrong guesses: a n o s t\n"
447 ]
448 },
449 {
450 "name": "stdout",
451 "output_type": "stream",
452 "stream": "stdout",
453 "text": [
454 "Enter letter: m\n"
455 ]
456 },
457 {
458 "output_type": "stream",
459 "stream": "stdout",
460 "text": [
461 "Word: _ i _ e : Lives = 4 , wrong guesses: a m n o s t\n"
462 ]
463 },
464 {
465 "name": "stdout",
466 "output_type": "stream",
467 "stream": "stdout",
468 "text": [
469 "Enter letter: l\n"
470 ]
471 },
472 {
473 "output_type": "stream",
474 "stream": "stdout",
475 "text": [
476 "Word: _ i _ e : Lives = 3 , wrong guesses: a l m n o s t\n"
477 ]
478 },
479 {
480 "name": "stdout",
481 "output_type": "stream",
482 "stream": "stdout",
483 "text": [
484 "Enter letter: c\n"
485 ]
486 },
487 {
488 "output_type": "stream",
489 "stream": "stdout",
490 "text": [
491 "Word: _ i _ e : Lives = 2 , wrong guesses: a c l m n o s t\n"
492 ]
493 },
494 {
495 "name": "stdout",
496 "output_type": "stream",
497 "stream": "stdout",
498 "text": [
499 "Enter letter: d\n"
500 ]
501 },
502 {
503 "output_type": "stream",
504 "stream": "stdout",
505 "text": [
506 "Word: _ i d e : Lives = 2 , wrong guesses: a c l m n o s t\n"
507 ]
508 },
509 {
510 "name": "stdout",
511 "output_type": "stream",
512 "stream": "stdout",
513 "text": [
514 "Enter letter: h\n"
515 ]
516 },
517 {
518 "output_type": "stream",
519 "stream": "stdout",
520 "text": [
521 "Word: _ i d e : Lives = 1 , wrong guesses: a c h l m n o s t\n"
522 ]
523 },
524 {
525 "name": "stdout",
526 "output_type": "stream",
527 "stream": "stdout",
528 "text": [
529 "Enter letter: b\n"
530 ]
531 },
532 {
533 "output_type": "stream",
534 "stream": "stdout",
535 "text": [
536 "You lost. The word was ride\n"
537 ]
538 }
539 ],
540 "prompt_number": 20
541 },
542 {
543 "cell_type": "code",
544 "collapsed": false,
545 "input": [],
546 "language": "python",
547 "metadata": {},
548 "outputs": [],
549 "prompt_number": 17
550 }
551 ],
552 "metadata": {}
553 }
554 ]
555 }