Проблема с условиями победы - PullRequest
0 голосов
/ 04 ноября 2019

Я не могу заставить свой код вызвать условие выигрыша, я не знаю, что мне не хватает. В игре используется черепаха Python для рисования палача, но это та часть, где игра, фактически функция, останавливается, когда я проигрываю, но не останавливается, когда я выигрываю:

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()

1 Ответ

0 голосов
/ 04 ноября 2019

Одна очевидная ошибка - это строка:

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()

Ни эта переделка, ни ваш оригинал не дают четкого определения того, как они обрабатывают повторяющиеся буквы, например «e» в «здесь».

...