Почему моя функция не активируется при вызове? - PullRequest
1 голос
/ 09 октября 2019
import random
def main():
   num_guesses = 4


   instruction_file=open('instructions.txt', 'r')

   list_of_words = ['apple', 'banana', 'watermelon', 'kiwi', 'pineapple', 'mango']
   answer=random.choice(list_of_words)
   puzzle=['_'] * len(answer)




   def display_instructions(instruction_file):
      file_contents=instruction_file.read()
      instruction_file=instruction_file.close()
      print(file_contents)





   def get_guess(num_guesses):
      print('The number of guesses remaining is ' + str(num_guesses)+ '.') 
      letter_input = input("Guess a letter ")
      return letter_input

   def update_puzzle_string(letter_input,puzzle,answer):
      if get_guess(num_guesses) in answer:
         for i,x in enumerate(answer):
            if x is get_guess:
               puzzle[i]=letter_input
               return True


   def display_puzzle_string(puzzle):
      print('The current state of the puzzle is '+str(puzzle))

   def is_word_found(puzzle,answer):
      is_word_found=True
      puzzle_string=print(''.join(puzzle))
      if puzzle_string == answer:
         return False





   def play_game(answer,puzzle):
      while True:
         display_puzzle_string(puzzle)
         get_guess(num_guesses)
         update_puzzle_string(get_guess,puzzle,answer)
         print(str(puzzle))



   is_word_found(puzzle,answer)
   display_instructions(instruction_file)         
   play_game(answer,puzzle)







main()

Извините за проблемы с форматированием. Цель этой программы состоит в том, чтобы собрать предположение от пользователя, а затем сравнить его со случайно выбранным словом из списка, после чего он обновляет головоломку с пробелами, которым принадлежит буква, если все буквы слова угаданы, пользовательсказали, что они верны. Пользователь получает 4 догадки. Это в основном палач. Когда я запускаю эту программу, она просто печатает инструкции, начальное состояние головоломки, запрашивает предположение, а затем продолжает спрашивать догадки. Я не понимаю, почему это не работает. Я реализую количество догадок после того, как получу помощь в этом.

1 Ответ

0 голосов
/ 09 октября 2019
import random
def main():
    num_guesses = 4
    instruction_file=open('instructions.txt', 'r')

    list_of_words = ['apple', 'banana', 'watermelon', 'kiwi', 'pineapple', 'mango']
    answer=random.choice(list_of_words)
    puzzle=['_'] * len(answer)

    def display_instructions(instruction_file):
        file_contents=instruction_file.read()
        instruction_file=instruction_file.close()
        print(file_contents)

    def get_guess(num_guesses):
        print('The number of guesses remaining is ' + str(num_guesses)+ '.') 
        letter_input = input("Guess a letter: ")
        return letter_input

    def update_puzzle_string(letter_input,puzzle,answer):
        for i,x in enumerate(answer):
            if x is letter_input:
                puzzle[i]=letter_input
        return

    def display_puzzle_string(puzzle):
        print('The current state of the puzzle is '+str(puzzle))

    def is_word_found(puzzle,answer):
        is_word_found=True
        puzzle_string=print(''.join(puzzle))
        if puzzle_string == answer:
            return False

    def play_game(answer,puzzle):
        while True:
            display_puzzle_string(puzzle) #display '_ _ _ _ _'
            guess = get_guess(num_guesses)
            update_puzzle_string(guess,puzzle,answer)
            #print(str(puzzle)) #this statement is causing the repetitive puzzle prints

    is_word_found(puzzle,answer)
    display_instructions(instruction_file)
    play_game(answer,puzzle)

main()

После исправления проблем с форматированием код теперь неоднократно запрашивает предположение и принимает данные. Я думаю, что проблема в основном существовала в форматировании, потому что я не получаю ошибок сейчас. Кроме того, вы случайно импортировали раньше? Приветствия

РЕДАКТИРОВАТЬ:

См. Изменения как update_puzzle_string() и play_game. Вы неоднократно вызывали функцию get_guess вместо того, чтобы использовать ее начальное возвращаемое значение. example (note that repeat letters are not supported under this code)

РЕДАКТИРОВАТЬ 2: (см. Комментарии к этому ответу)

См. update_puzzle_string() для изменения, касающегося «нескольких одинаковых букв в ответе»program now places all of the right letter in place

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...