Игра "Палач". Цикл For и вложенные If
https://i.stack.imgur.com/071HB.png
В течении учебного трека усложняю игру. Задачи написаны коряво (автоматический перевод с английского), но есть 2 скрина с примером того, как должен выглядеть итоговый вывод. Они громоздкие, но понятные.
Цели:
- У игрока ровно 8 попыток ввода букв. Ничего не меняется, если у игрока осталось больше попыток, но он уже угадал слово;
2.Если буква не появляется в слове, компьютер делает одну попытку - даже если пользователь уже угадал эту букву;
- Если у игрока больше нет попыток, игра должна закончиться, и программа должна показать сообщение о проигрыше. В противном случае игрок может продолжить ввод букв.
Также слово следует выбрать из нашего списка:, '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 шт):
у вас что-то странное написано
где вводится буква? в переменной
in_putsничего не содержитсяin_puts not in computer_choice:такая проверка работает, только если ввод букв был последовательный, как в слове, например
'es' in 'test' даст True, а 'se' in 'Test' даст False
- зачем 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])