我的刽子手游戏出错



我正在通过Python 2.7的'Invent With Python'学习Python。目前正在研究刽子手章节。

在过去的 5 天内,我浏览了 3 次代码,但在运行代码时没有得到与预期相同的结果。

我的代码:

import random
HANGMANPICS = ['''
    +------+
    |      |
    |      |
           |
           |
           |
           |
           |
           |
           |
           |
==============''', '''
    +      +
    |      |
    |      |
    O      |
           |
           |
           |
           |
           |
           |
           |
==============''', '''
    +------+
    |      |
    |      |
    |      |
    O      |
    |      |
    |      |
    |      |
           |
           |
==============''', '''

    +------+
    |      |
    |      |
    O      |
   /|      |
  / |      |
    |      |
           |
           |
           |
           |
==============''', '''

    +------+
    |      |
    |      |
    O      |
   /|     |
  / |     |
    |      |
           |
           |
           |
           |
==============''', '''

    +------+
    |      |
    |      |
    O      |
   /|     |
  / |     |
    |      |
   /       |
  /        |
           |
           |
==============''', '''
    +------+
    |      |
    |      |
    O      |
   /|     |
  / |     |
    |      |
   /      |
  /       |
           |
           |
           |
==============''']
words = 'ant baboon badger bat bear beaver beetle bird camel cat clam cobra cougar coyote crab crane crow deer dog donkey duck eagle ferret fish fox frog goat goose hawk iguana jackal koala leech lemur lion lizard llama mite monkey moose moth mouse mule newt otter owl oyster panda parrot pigeon python quail rabbit ram rat raven rhino salmon seal shark sheep skunk sloth slug snail snake spider squid stork swan tick tiger toad trout turkey turtle wasp weasel whale wolf wombat worm zebra'.split()
# This function returns a random string from the list of strings.
def getRandomWord(wordList): 
  wordIndex = random.randint(0, len(wordList) - 1)
  return wordList[wordIndex]
def displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord):
    print HANGMANPICS[len(missedLetters)]
    print
    print 'Missed Letters:',
    for letter in missedLetters:
        print letter,
    print
    blanks = '_' * len(secretWord)
    for i in range(len(secretWord)):
      if secretWord[i] in correctLetters:
        blanks = blanks[:i] + secretWord[i] + blanks[i+1:]
    for letter in blanks:
        print letter,
    print
def getGuess(alreadyGuessed):
    while True:
        print 'Guess a letter.'
        guess = raw_input()
        guess = guess.lower()
        if len(guess) != 1:
            print 'Please enter a single letter.'
        elif guess in alreadyGuessed:
            print 'You have already guessed that letter. Choose again.'
        elif guess not in 'abcdefghijklmnopqrstuvwxyz':
            print 'Please enter a LETTER.'
        else:
            return guess
def playAgain():
    print 'Do you want to play again? (yes or no)'
    return raw_input().lower().startswith('y')

print 'HANGMAN'
missedLetters = ''
correctLetters = ''
secretWord = getRandomWord(words)
gameIsDone = False
while True:
    displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord)
    guess = getGuess(missedLetters + correctLetters)
    if guess in secretWord:
        correctLetters = correctLetters + guess
        foundAllLetters = True
        for i in range(len(secretWord)):
            if secretWord[i] not in correctLetters:
                foundAllLetters = False
                break
        if foundAllLetters:
            print 'Yes! The secret word is "' + secretWord + '"! You have won!'
            gameIsDone = True
        else:
            missedLetters = missedLetters + guess
            if len(missedLetters) == len(HANGMANPICS) - 1:
                displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord)
                print 'You have run out of guesses!nAfter ' + str(len(missedLetters)) + ' missed guesses and ' + str(len(correctLetters)) + ' correct guesses, the word was "' + secretWord + '"'
                gameIsDone = True
    if gameIsDone:
        if playAgain():
            missedLetters = ''
            correctLetters = ''
            gameIsDone = False
            secretWord = getRandomWord(words)
        else:
            break

有人可以告诉我问题是什么 -

  1. 据我了解,我已经搞砸了缩进。只是想不通在哪里。

请帮忙。

Python 是"空间敏感的"。所以这段代码

else:
    missedLetters = missedLetters + guess
    if len(missedLetters) == len(HANGMANPICS) - 1:
       displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord)
       print 'You have run out of guesses!nAfter ' + str(len(missedLetters)) + ' missed guesses and ' + str(len(correctLetters)) + ' correct guesses, the word was "' + secretWord + '"'
       gameIsDone = True

与它上面的if条款有关(if foundAllLetters:)。删除 4 个空格,使elseif guess in secretWord 位于同一列上。

最新更新