计算机科学和编程导论-week3-作业

来源:互联网 发布:工资核算软件 编辑:程序博客网 时间:2024/06/05 22:37

计算机科学和编程导论

 

Week3

ps3_hangman.py

________________________________________________________________

 

import random

import string

 

WORDLIST_FILENAME = "words.txt"

 

def loadWords():#调用字典

    print "Loading word list from file..."

    # inFile: file

    inFile = open(WORDLIST_FILENAME, 'r', 0)

    # line: string

    line = inFile.readline()

    # wordlist: list of strings

    wordlist = string.split(line)

    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

# -----------------------------------

 

wordlist = loadWords()

 

def isWordGuessed(secretWord, lettersGuessed):#单词是否在列表

    for i in secretWord:#单词在输入列表

        if i not in lettersGuessed:#单词不再在选择列表

            return False#返回False

    return True#返回True

#-----------------------------------

 

def getGuessedWord(secretWord, lettersGuessed):#返回单词猜测状态指示

    txt = ''#返回的单词指示

    for i in secretWord:#单词在输入列表

        if i in lettersGuessed:#单词在列表

            txt = txt + ' ' + i#加入txt

        else:

            txt = txt + ' _ '#输出_

    return txt#返回txt

#-----------------------------------

 

def getAvailableLetters(lettersGuessed):#列表指示

    bz = 'abcdefghijklmnopqrstuvwxyz'#默认字符

    txt = ''#返回的列表指示    fori in bz:#单词在默认字符

        if i not in lettersGuessed:#单词不在列表

            txt += i#加入列表指示

    return txt#返回txt

#-----------------------------------

 

def hangman(secretWord):#游戏主体

lettersGuessed = []#列表

mistakesMade = 8#猜测次数

print 'welcome to the game, Hangman!'

print 'I am thinking of a word that is ',len(secretWord),' letters long.'

print '----------'

while mistakesMade > 0.01 and not isWordGuessed(secretWord, lettersGuessed):

#当猜测次数大于0 和 not true状态下(小于0游戏结束)

print 'You have ',str(mistakesMade),' guesses left.'

print 'Available letters:',getAvailableLetters(lettersGuessed)

guess = raw_input('Please guess a letter:').lower()

#猜测开始(.lower())为小写

if guess in lettersGuessed:

print "Oops! You've already guessed that letter:", getGuessedWord(secretWord, lettersGuessed)

#猜测的单词在列表里,提示重复猜测,调用getGuessedWord返回单词猜测状态指示

else:

if guess in secretWord:

lettersGuessed.append(guess)

print 'Good guess:', getGuessedWord(secretWord, lettersGuessed)

#猜测的单词在正确词语,将猜测的单词加入列表,调用getGuessedWord返回单词猜测状态指示

 

else:

lettersGuessed.append(guess)

mistakesMade -= 1

print 'Oops! That letter is not in my word:', getGuessedWord(secretWord, lettersGuessed)

#猜测的单词不在正确词语,将猜测的单词加入列表,猜测次数-1,调用getGuessedWord返回单词猜测状态指示

 

print '----------'

if mistakesMade > 0.01:

print 'Congratulations, you won!'

else:

print 'Sorry, you ran out of guesses. The word was else.'

#猜测结束后,猜测次数大于0下,返回成功,否则返回失败

#-----------------------------------

 

secretWord = chooseWord(wordlist).lower()

hangman(secretWord)

0 0
原创粉丝点击