By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,022 Members | 856 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,022 IT Pros & Developers. It's quick & easy.

Hangman Python game help for MIT

P: 2
Hi.

I'm trying to do the Hangman assignment for an online MIT course. However, I'm running into problems with the master code:

I've got the following code so far:

Expand|Select|Wrap|Line Numbers
  1. import urllib.request 
  2.  
  3. # Hangman game
  4. #
  5.  
  6. # -----------------------------------
  7. # Helper code
  8. # You don't need to understand this helper code,
  9. # but you will have to know how to use the functions
  10. # (so be sure to read the docstrings!)
  11.  
  12. import random
  13.  
  14. WORDLIST_FILENAME = "http://bribre.net/edX/MIT6001/words.txt"
  15.  
  16. def loadWords():
  17.     """
  18.     Returns a list of valid words. Words are strings of lowercase letters.
  19.  
  20.     Depending on the size of the word list, this function may
  21.     take a while to finish.
  22.     """
  23.     print("Loading word list from file...")
  24.     # inFile: file
  25.     #inFile = open(WORDLIST_FILENAME, 'r')
  26.     inFile = urllib.request.urlopen(WORDLIST_FILENAME)
  27.     # line: string
  28.     line = inFile.readline()
  29.     # wordlist: list of strings
  30.     wordlist = line.split()
  31.     print("  ", len(wordlist), "words loaded.")
  32.     return wordlist
  33.  
  34. def chooseWord(wordlist):
  35.     """
  36.     wordlist (list): list of words (strings)
  37.  
  38.     Returns a word from wordlist at random
  39.     """
  40.     return random.choice(wordlist)
  41.  
  42. # end of helper code
  43. # -----------------------------------
  44.  
  45. # Load the list of words into the variable wordlist
  46. # so that it can be accessed from anywhere in the program
  47. wordlist = loadWords()
  48.  
  49. def isWordGuessed(secretWord, lettersGuessed):
  50.     '''
  51.     secretWord: string, the word the user is guessing
  52.     lettersGuessed: list, what letters have been guessed so far
  53.     returns: boolean, True if all the letters of secretWord are in lettersGuessed;
  54.       False otherwise
  55.     '''
  56.     lettersGuessed = ['a', 'a', 's', 't', 'r', 'm', 'c']
  57.     if letter in lettersGuessed:
  58.       True
  59.     else:
  60.       False
  61.     print(isWordGuessed(secretWord, lettersGuessed))
  62.     return isWordGuessed
  63.  
  64.  
  65.  
  66. def getGuessedWord(secretWord, lettersGuessed):
  67.     '''
  68.     secretWord: string, the word the user is guessing
  69.     lettersGuessed: list, what letters have been guessed so far
  70.     returns: string, comprised of letters and underscores that represents
  71.       what letters in secretWord have been guessed so far.
  72.     '''
  73.     lettersGuessed = ['a', 'a', 's', 't', 'r', 'm', 'c']
  74.     returns1 = '_a_ _';
  75.     returns2 = '_ _c_';
  76.     returns3 = 't_ _t';
  77.     returns4 = 'ta_t';
  78.     returns5 = 't_ct';
  79.     print(getGuessedWord(secretWord, lettersGuessed))
  80.     return getGuessedWord
  81.  
  82.  
  83.  
  84. def getAvailableLetters(lettersGuessed):
  85.     '''
  86.     lettersGuessed: list, what letters have been guessed so far
  87.     returns: string, comprised of letters that represents what letters have not
  88.       yet been guessed.
  89.     '''
  90.     s = 'bdefghijklnopquvwxyz'
  91.     lettersGuessed = ['a', 'a', 's', 't', 'r', 'm', 'c']
  92.     returns = s
  93.     print(getAvailableLetters(lettersGuessed))
  94.     return getAvailableLetters
  95.  
  96. def hangman(secretWord):
  97.     '''
  98.     secretWord: string, the secret word to guess.
  99.  
  100.     Starts up an interactive game of Hangman.
  101.  
  102.     * At the start of the game, let the user know how many 
  103.       letters the secretWord contains.
  104.  
  105.     * Ask the user to supply one guess (i.e. letter) per round.
  106.  
  107.     * The user should receive feedback immediately after each guess 
  108.       about whether their guess appears in the computers word.
  109.  
  110.     * After each round, you should also display to the user the 
  111.       partially guessed word so far, as well as letters that the 
  112.       user has not yet guessed.
  113.  
  114.     Follows the other limitations detailed in the problem write-up.
  115.     '''
  116.     return isWordGuessed
  117.     return guessedWord
  118.     return getAvailableLetters
  119.     return hangman
  120.  
  121.  
  122.  
  123.  
  124. # When you've completed your hangman function, uncomment these two lines
  125. # and run this file to test! (hint: you might want to pick your own
  126. # secretWord while you're testing)
  127.  
  128. # secretWord = chooseWord(wordlist).lower()
  129. # hangman(secretWord)
  130.  
  131.  
Of them, only the first function of the master code has any outputs:

Expand|Select|Wrap|Line Numbers
  1. Loading word list from file...
  2. ('  ', 55909, 'words loaded.')
Can someone tell me what is the issue I'm running into? I know how to solve the problem as well as the solution, but trying to get there is virtually impossible. What I need to output is either a winning game or a losing game.

I don't want the solution, just an indication of what's going wrong so I can deduce how to fix it.
Oct 6 '16 #1
Share this Question
Share on Google+
3 Replies


Expert 100+
P: 618
Of them, only the first function of the master code has any outputs
The second function, getAvailableLetters(lettersGuessed) returns a variable that has not been declared, i.e. return getAvailableLetters. The third function, hangman(secretWord), has 4 returns, and only the first one executes as the function then exits. Finally, you do not get any input from the user so there are no guesses to analyze. A tutorial is a good next step to learn the basics for any Python program https://wiki.python.org/moin/BeginnersGuide/Programmers
Oct 6 '16 #2

P: 2
I'll look into that link. Though I think I should be a bit more explicit regarding what the functions are:

Function 1 is the loadWords function

Function 2 is the chooseWord function

Function 3 is the isWordGuessed function

Function 4 is the getGuessedWord function

Function 5 is the getAvailableLetters function

and Function 6 is the hangman function.

I thought that getAvailableLetters was declared (unless def doesn't actually declare a variable)?
Oct 6 '16 #3

Oralloy
Expert 100+
P: 983
Just a small observation - if people cannot figure out your functions in a few seconds, you need to include a block of documentation explaining purpose, invocation, and return values.

Trust me, for code that others must read, it is a huge bonus.
Oct 8 '16 #4

Post your reply

Sign in to post your reply or Sign up for a free account.