Игра "Палач". Цикл For и вложенные If

https://i.stack.imgur.com/071HB.png

В течении учебного трека усложняю игру. Задачи написаны коряво (автоматический перевод с английского), но есть 2 скрина с примером того, как должен выглядеть итоговый вывод. Они громоздкие, но понятные.

Цели:

  1. У игрока ровно 8 попыток ввода букв. Ничего не меняется, если у игрока осталось больше попыток, но он уже угадал слово;

2.Если буква не появляется в слове, компьютер делает одну попытку - даже если пользователь уже угадал эту букву;

  1. Если у игрока больше нет попыток, игра должна закончиться, и программа должна показать сообщение о проигрыше. В противном случае игрок может продолжить ввод букв.

Также слово следует выбрать из нашего списка:, 'python', 'java', 'kotlin', 'javascript'чтобы ваша программа могла быть протестирована более надежно.

Мой вывод не соответствует ожиданию((( Помогите, пожалуйста, откорректировать.

import random
list_for_game = ['python', 'java', 'kotlin', 'javascript']
computer_choice = random.choice(list_for_game)

print("H A N G M A N")
print("Guess the word:")

in_puts = ""
attempt = 8
while attempt > 0:
   failed_attempt = 0
   for letter in computer_choice:
       if letter in in_puts:
           print(letter)
       else:
           print(
           failed_attempt += 1
   if failed_attempt == 0:
       print("Thanks for playing!")
       print("We'll see how well you did in the next stage")
       break
   in_put += in_puts
   if in_puts not in computer_choice:
       attempt -= 1
       print("That letter doesn't appear in the word")
       if attempt == 0:
           print("Thanks for playing!")
           print("We'll see how well you did in the next stage")


 

Ответы (1 шт):

Автор решения: Zhihar

у вас что-то странное написано

  1. где вводится буква? в переменной in_puts ничего не содержится

  2. in_puts not in computer_choice: такая проверка работает, только если ввод букв был последовательный, как в слове, например

'es' in 'test' даст True, а 'se' in 'Test' даст False

  1. зачем 2 переменные attempt и failed_attempt, если достаточно только одной из них?

Для проверки букв можно использовать такой код:

word = "Проверка слова на наличие разных букв"

letters = "орв"

masked_word = ''.join(map(lambda letter: letter if letter in letters else '_', word))

print(masked_word)

выведется

_ров_р_____ов_____________р_________в

т.е. проходим по всем буквам слова и проверяем, входят ли они в список уже введённых букв или нет и в зависимости от этого формируем результат

или так (чуть покороче):

masked_word = ''.join([letter if letter in letters else '_' for letter in word])

или для любителей совсем коротко так:

masked_word = ''.join([('_', letter)[letter in letters] for letter in word])
→ Ссылка