Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Wed Dec 6 07:52:42 2017
- @author: Usama
- """
- # Hangman game
- #
- # -----------------------------------
- # Helper code
- # You don't need to understand this helper code,
- # but you will have to know how to use the functions
- # (so be sure to read the docstrings!)
- import random
- WORDLIST_FILENAME = "words.txt"
- def loadWords():
- """
- Returns a list of valid words. Words are strings of lowercase letters.
- Depending on the size of the word list, this function may
- take a while to finish.
- """
- print("Loading word list from file...")
- # inFile: file
- inFile = open(WORDLIST_FILENAME, 'r')
- # line: string
- line = inFile.readline()
- # wordlist: list of strings
- wordlist = line.split()
- print(" ", len(wordlist), "words loaded.")
- return wordlist
- def chooseWord(wordlist):
- """
- wordlist (list): list of words (strings)
- Returns a word from wordlist at random
- """
- return random.choice(wordlist)
- # end of helper code
- # -----------------------------------
- # Load the list of words into the variable wordlist
- # so that it can be accessed from anywhere in the program
- wordlist = loadWords()
- randomWord = chooseWord(wordlist)
- #print(randomWord)
- def isWordGuessed(secretWord, lettersGuessed):
- '''
- secretWord: string, the word the user is guessing
- lettersGuessed: list, what letters have been guessed so far
- returns: boolean, True if all the letters of secretWord are in lettersGuessed;
- False otherwise
- '''
- # FILL IN YOUR CODE HERE...
- save_word = []
- count = 0
- for w in lettersGuessed:
- if w in secretWord:
- count += 1
- save_word.append(w)
- return sorted(save_word) == sorted(secretWord)
- def getGuessedWord(secretWord, lettersGuessed):
- '''
- secretWord: string, the word the user is guessing
- lettersGuessed: list, what letters have been guessed so far
- returns: string, comprised of letters and underscores that represents
- what letters in secretWord have been guessed so far.
- '''
- # FILL IN YOUR CODE HERE...
- word_final = ''
- word_save = ' '
- for d in secretWord:
- if d in lettersGuessed:
- word_save += d
- for w in secretWord:
- if w in word_save:
- word_final += w
- else:
- word_final += '_ '
- return word_final
- def getAvailableLetters(lettersGuessed):
- '''
- lettersGuessed: list, what letters have been guessed so far
- returns: string, comprised of letters that represents what letters have not
- yet been guessed.
- '''
- # FILL IN YOUR CODE HERE...
- import string
- alphabet = list(string.ascii_lowercase)
- #input : only LIST
- for w in lettersGuessed:
- if w in alphabet:
- alphabet.remove(w)
- return ''.join(alphabet)
- def hangman(secretWord):
- '''
- secretWord: string, the secret word to guess.
- Starts up an interactive game of Hangman.
- * At the start of the game, let the user know how many
- letters the secretWord contains.
- * Ask the user to supply one guess (i.e. letter) per round.
- * The user should receive feedback immediately after each guess
- about whether their guess appears in the computers word.
- * After each round, you should also display to the user the
- partially guessed word so far, as well as letters that the
- user has not yet guessed.
- Follows the other limitations detailed in the problem write-up.
- '''
- # FILL IN YOUR CODE HERE...
- print('Welcome to the game, Hangman!')
- print('I am thinking of a word that is ' + str(len(secretWord)) +
- ' letters long')
- print('-------------')
- raw_input = str(input('Please guess a letter: '))
- guessLetter = raw_input.lower()
- remainingGuess = 8
- lettersGuessed = []
- while (remainingGuess > 0) or isWordGuessed == False:
- print('You have ' + str(remainingGuess) + ' guesses left.')
- print('Available letters: ' + getAvailableLetters(lettersGuessed))
- print('Please guess a letter: ' + guessLetter)
- print('--->testing the list' + str(lettersGuessed)) #temporary =^=
- #checking starts here
- if guessLetter not in getAvailableLetters(lettersGuessed):
- print('Oops! That letter is not in my word: ' +
- getGuessedWord(secretWord, lettersGuessed))
- lettersGuessed.append(guessLetter)
- remainingGuess -= 1
- elif guessLetter in lettersGuessed:
- print("Oops! You've already guessed that letter: " +
- getGuessedWord(secretWord, lettersGuessed))
- #elif '_ ' not in getGuessedWord(secretWord, lettersGuessed):
- # print('Good guess: ' + getGuessedWord(secretWord, lettersGuessed))
- else:
- print('Good guess: ' + getGuessedWord(secretWord, lettersGuessed))
- lettersGuessed.append(guessLetter)
- if getGuessedWord(secretWord, lettersGuessed) == secretWord:
- break
- print('-------------')
- if getGuessedWord(secretWord, lettersGuessed) == secretWord:
- print('Congratulations, you won!')
- if not (getGuessedWord(secretWord, lettersGuessed) == secretWord) and (remainingGuess == 0):
- print('Sorry, you ran out of guesses. The word was ' + secretWord)
- # When you've completed your hangman function, uncomment these two lines
- # and run this file to test! (hint: you might want to pick your own
- # secretWord while you're testing)
- secretWord = chooseWord(wordlist).lower()
- hangman(secretWord)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement