Игра "Виселица" найти простое решение
word = list(input("Введите слово: "))
word_len = len(word)
life = 5
star = list(word_len*"*")
while True:
letter = input("Введите букву:")
if letter in word:
print("True")
**star[3] = letter
print("".join(star)**)
else:
print("False")
life -= 1
print(life)
Как сделать так, чтобы при вводе буквы она появлялась на своем месте? Не могу понять, что нужно добавить в код. В строке ** буква появляется всегда на 3 месте. Нужно простое решение т.к. язык только начинаю изучать.
Ответы (2 шт):
Автор решения: Павел Ериков
→ Ссылка
Ну если прям простое решение, то функцию index вам в помощь. Она вернет индекс первого вхождения символа в строку.
Вот пример использования:
word = list(input("Введите слово: "))
word_len = len(word)
life = 5
star = list(word_len*"*")
while True:
letter = input("Введите букву:")
if letter in word:
print("True")
#Заменяем букву по индексу в слове
star[word.index(letter)] = letter
print("".join(star))
else:
print("False")
life -= 1
print(life)
Должен сказать, что решение выше не работает если в слове будут повторяющиеся буквы. Можно например через цикл заменять все буквы используя так же функцию index, но передавая в нее 2 параметром индекс последнего найденного символа + 1 и третьим параметром длину слова.
Например вот так:
word = str(input("Введите слово: "))
word_len = len(word)
life = 5
star = list(word_len*"*")
while True:
letter = input("Введите букву:")
if letter in word:
print("True")
lastIndex = -1
#Пока мы не перевернули все одинаковые буквы
while True:
if word.count(letter, lastIndex + 1) < 1:
break
#Находим индекс символа пропуская те, которые левее lastIndex
Index = word.index(letter, lastIndex + 1)
#Заменяем букву
star[Index] = letter
#Запоминаем последний найденный индекс
lastIndex = Index
print("".join(star))
else:
print("False")
life -= 1
print(life)
Автор решения: Danis
→ Ссылка
попробуйте так:
word = list(input("Введите слово: "))
word_len = len(word)
life = 5
star = list(word_len*"*")
while True:
letter = input("Введите букву:")
if letter in word:
print("True")
for i, el in enumerate(word):
if el == letter:
star[i] = letter
print("".join(star))
else:
print("False")
life -= 1
print(life)