Как сделать так, чтобы моя игра hangman могла находить более 2 двойных букв?

#python

#python

Вопрос:

В моей программе hangman возникла проблема с поиском слова из более чем 2 двойных букв.

ПРИМЕР: если бы у меня было aabc или aaabc в моем списке угаданных слов, то, я думаю, a b c это не скажет мне, что я прав. Но если у меня было abc в guess wordlist, и я угадываю a b c , тогда я прав.

Вот какой у меня код:

 while keep_playing:
    wordlist=["butterfly","tree","circumstances","jinrikisha"]
    word=choice(wordlist)
    word_len=len(word)
    guesses=word_len * ['_']
    max_incorrect=7
    alphabet="abcdefghijklmnopqrstuvxyz"
    letters_tried=""
    number_guesses=0
    letters_correct=0
    incorrect_guesses=0
    print_game_rules(max_incorrect,word_len)
    while (incorrect_guesses != max_incorrect) and (letters_correct != word_len):
        clues()
        letter=get_letter()
        if len(letter)==1 and letter.isalpha():
            if letters_tried.find(letter) != -1:
                print "You already picked", letter
            else:
                letters_tried = letters_tried   letter
                first_index=word.find(letter)
                if  first_index == -1:
                    incorrect_guesses= incorrect_guesses  1
                    print "The",letter,"is not the mystery word."
                else:
                    print"The",letter,"is in the mystery word."
                    letters_correct=letters_correct 1
                    for i in range(word_len):
                        if letter == word[i]:
                            guesses[i] = letter
        else:
            print "Please guess a single letter in the alphabet."
  

Посмотрите, как во всем моем списке слов было более 2 двойных букв, и никогда не говорите мне, что я угадал правильно, даже если я угадал все буквы.
Я знаю, что если в слове len буква больше 2 (как двойная буква), это неправильно, но как я могу это исправить?

Ответ №1:

Конечное условие неверно, потому что каждый раз letters_correct увеличивается только на единицу (даже если буква встречается несколько раз).

Я бы изменил конечное условие [победы] на «когда в guesses нет _ ‘s», что означает, что все _ ‘s были заменены, что означает… (также обязательно учитывайте входную фразу «hello world» [и подобное] при генерации guesses , если это имеет значение).

Счастливой домашней работы.


Бонусные баллы за то, что программа стала более «модульной»: тривиальное изменение заключается в том, чтобы заставить основной цикл (с условием проверки победы) вызывать метод, который запрашивает букву, а затем обновляет отображение.