Решаю задачу по мотивам курса от “STEPIK”. Не могу понять как сделать возможность замены символа “*”, на соответствующую букву. Игра “Виселеца”.
import random
# список слов для загадывания
word_list = ['mama', 'papa', 'brat', 'sestra'] # список слов для игры
# загадываем слово
def get_word(word_list):
return random.choice(word_list).upper()
# функция получения текущего состояния игры
def display_hangman(tries):
stages = [ # финальное состояние: голова, торс, обе руки, обе ноги
'''
--------
| |
| O
| \\|/
| |
| / \\
|
|
-
''',
# голова, торс, обе руки, одна нога
'''
--------
| |
| O
| \\|/
| |
| /
|
|
-
''',
# голова, торс, обе руки
'''
--------
| |
| O
| \\|/
| |
|
|
|
-
''',
# голова, торс и одна рука
'''
--------
| |
| O
| \\|
| |
|
|
|
-
''',
# голова и торс
'''
--------
| |
| O
| |
| |
|
|
|
-
''',
# голова
'''
--------
| |
| O
|
|
|
|
|
-
''',
# начальное состояние
'''
--------
| |
|
|
|
|
|
|
-
'''
]
return stages[tries]
# основная логика игры
def play(word):
# начальные данные
word_completion = '*' * len(word) # строка содержащая символы * на каждую букву задуманного слова
guessed_words = [] # список уже названых букв
quessed_letters = [] # список названых слов
tries = 6 # количество попыток
# начальные этап игры
print('Давайте играть в угадайку слов.')
print('У вас будет 6 попыток.')
print(display_hangman(tries))
print('Загаданное слово:', word_completion)
# запрашиваем букву или слово
while tries !=0:
# проверяем что введены именно буквенные символы
quessed = input('Назовите букву или слово целиком: ').upper()
if not quessed.isalpha():
print('Только букву или слово целиком')
# если уже называли такую букву
elif quessed in guessed_words:
print('Вы уже называли такую букву.')
#continue
# если уже называли такое слово
elif quessed in quessed_letters:
print('Вы уже называли такое слово.')
#continue
# проверяем наличие буквы в загаданном слове
elif quessed.isalpha():
if len(quessed) == 1: # если введена 1 буква
if quessed in word: # и если она присутствует в слове
guessed_words.append(quessed) # добавляем в список ранее введенных
print('Есть такая буква в этом слове')
continue
else:
tries -= 1 # сокращаем количество попыток на 1
guessed_words.append(quessed)
print('Такой буквы в слове нет')
print(display_hangman(tries))
print('Осталось попыток:', tries)
if tries == 0:
print('Вы не смогли угадать слово:', word)
break
elif len(quessed) > 1:
if quessed != word:
tries -= 1
print(display_hangman(tries))
quessed_letters.append(quessed) # заносим слово в список слов
print('Неверно осталось попыток:', tries)
print(word_completion)
if tries == 0:
print('Вы не смогли угадать слово:', word)
break
# если угадали слово
elif quessed == word:
print('Поздравляем, вы угадали слово!')
break
play(get_word(word_list)