首页 > 解决方案 > 刽子手获胜条件问题

问题描述

我无法让我的代码触发获胜条件,我不知道我错过了什么。游戏使用 Python turtle 来绘制刽子手,但这是游戏,实际上是函数,在我输了时停止,但在我赢时不会停止的部分:

def startGame():
    word_list = ["cat", "dog", "fly", "hi", "bye", "five", "four"]
    word = word_list[random.randint(0, 6)]
    allowedGuesses = 5
    guessesSoFar = 0
    lettersUsedSoFar = ''
    guss_word = ['_' for x in word]
    name = input("What is your name? ")
    print("Hello, " + name, ",it's time to play HangMan!")
    print(guss_word)

    while guessesSoFar < allowedGuesses:
        guess = input("Guess a Letter!:")
        if guess in word:
            guess == lettersUsedSoFar
            guss_word[word.index(guess)] = guess
            print(guss_word)
            print("Yes!" + guess + " is in the word")
            print("Your Guesses So Far:" + lettersUsedSoFar)
        else:
            lettersUsedSoFar = lettersUsedSoFar + guess + ","
            guessesSoFar = guessesSoFar + 1
            drawHangman(guessesSoFar)
            print(guss_word)
            print("Oops!" + guess + " is not in the word")
            print("Your Guesses So Far:" + lettersUsedSoFar)

startGame()

标签: pythonpython-3.6

解决方案


一个明显的错误是这一行:

guess == lettersUsedSoFar

什么都不做。(幸运的是。)

您需要进行测试以确定用户是否获胜。由于guss_word开始时所有下划线字符,测试可能是它是否有任何下划线留在它:

if '_' not in guss_word:
    # Winner!  (Now get out of program.)
else:
    # Good answer but keep playing

以下是我通过此修复、样式更改和代码优化对您的程序进行的返工:

from random import choice

WORD_LIST = ["cat", "dog", "fly", "hi", "bye", "five", "four"]

ALLOWED_GUESSES = 5

def drawHangman(count):
    pass

def startGame():

    name = input("What is your name? ")
    print("Hello, " + name,", it's time to play HangMan!")

    guessesSoFar = 0
    letters_used = ''

    word = choice(WORD_LIST)
    incomplete_word = ['_' for x in word]
    print(*incomplete_word)

    while guessesSoFar < ALLOWED_GUESSES:
        letter = input("Guess a letter: ")

        if letter in word:
            incomplete_word[word.index(letter)] = letter
            print(*incomplete_word)

            if '_' not in incomplete_word:
                print("You win!")
                break
            else:
                print("Yes!", letter + " is in the word.")
        else:
            if letter not in letters_used:
                letters_used += letter
            guessesSoFar += 1
            drawHangman(guessesSoFar)
            print(*incomplete_word)
            print("Oops!", letter + " is not in the word")

        print("Your guesses so far:", ','.join(letters_used))

startGame()

无论是这个返工还是你的原作,都没有清楚地定义它们如何处理重复的字母,比如“here”中的“e”。


推荐阅读