1
+ #04_09_hangman_full_solution
2
+ import random
3
+
4
+ words = ['chicken' , 'dog' , 'cat' , 'mouse' , 'frog' ]
5
+ lives_remaining = 14
6
+ guessed_letters = ''
7
+
8
+
9
+
10
+ def play ():
11
+ word = pick_a_word ()
12
+ while True :
13
+ guess = get_guess (word )
14
+ if process_guess (guess , word ):
15
+ print ('You win! Well Done!' )
16
+ break
17
+ if lives_remaining == 0 :
18
+ print ('You are Hung!' )
19
+ print ('The word was: ' + word )
20
+ break
21
+
22
+ def pick_a_word ():
23
+ word_position = random .randint (0 , len (words ) - 1 )
24
+ return words [word_position ]
25
+
26
+ def get_guess (word ):
27
+ print_word_with_blanks (word )
28
+ print ('Lives Remaining: ' + str (lives_remaining ))
29
+ guess = input (' Guess a letter or whole word?' )
30
+ return guess
31
+
32
+ def print_word_with_blanks (word ):
33
+ display_word = ''
34
+ for letter in word :
35
+ if guessed_letters .find (letter ) > - 1 :
36
+ # letter found
37
+ display_word = display_word + letter
38
+ else :
39
+ # letter not found
40
+ display_word = display_word + '-'
41
+ print (display_word )
42
+
43
+ def process_guess (guess , word ):
44
+ if len (guess ) > 1 and len (guess ) == len (word ):
45
+ return whole_word_guess (guess , word )
46
+ else :
47
+ return single_letter_guess (guess , word )
48
+
49
+
50
+ def whole_word_guess (guess , word ):
51
+ global lives_remaining
52
+ if guess .lower () == word .lower ():
53
+ return True
54
+ else :
55
+ lives_remaining = lives_remaining - 1
56
+ return False
57
+
58
+ def single_letter_guess (guess , word ):
59
+ global guessed_letters
60
+ global lives_remaining
61
+ if word .find (guess ) == - 1 :
62
+ # letter guess was incorrect
63
+ lives_remaining = lives_remaining - 1
64
+ guessed_letters = guessed_letters + guess .lower ()
65
+ if all_letters_guessed (word ):
66
+ return True
67
+ return False
68
+
69
+ def all_letters_guessed (word ):
70
+ for letter in word :
71
+ if guessed_letters .find (letter .lower ()) == - 1 :
72
+ return False
73
+ return True
74
+
75
+ play ()
0 commit comments