Попытка создать телевизионное игровое шоу «Lingo» в Python.Python - Заменить все вхождения буквы в определенном месте на строку
В игре игроки пытаются угадать слово из пяти букв. Они начинают с моего случайного угадывания пятибуквенного слова. Затем игровое поле загорится, показывая, как слово, которое они угадывают, совпадает с фактическим словом.
Например, если настоящее слово «ущелье», а игроки угадают «орел» - доска покажет, что «e» и «g» находятся в реальном слове, но что они не в правильном положение относительно реального слова «ущелье». (G находятся в индексе [0] и [3], а в орле они находятся в индексе [2]).
Если слово было «счастливым», и пользователи догадались, что «гарпия», доска покажет, что три буквы были в реальном слове, и они были правильно расположены. (Ч-а-у).
В реализации Python я подчеркиваю, что письмо правильное, но в неправильном положении с «~» под ним. Если это правильно и в правильном положении, я ставлю '!' под ним.
важная функция выглядит следующим образом:
wordGuess = input("Guess a letter: ")[0:5]
for letter in wordGuess:
if letter in realWord:
if wordGuess.find(letter) == realWord.find(letter)
// Не знаю, что делать здесь
Если есть более чем один случай правильного письма, с одной из букв неправильно сопоставляя положение буквы в realWord - как ее обнаружить?
Например, если настоящее слово «длилось», и кто-то должен был догадываться «латунь», «первая» в латуни - правильная буква, но в неправильном положении, а вторая - правильное письмо и правильное положение.
Итак, какой лучший способ реализовать функцию, которая может проверить, правильно ли она написана в правильной позиции (и обозначить ее символом!) Или обозначить ее правильную букву в неправильном положении с помощью ~
Метод булевого флага помогает найти прямые совпадения, но это d oes не помогает определить, является ли буква в «guessWord» IN «realWord», но просто не в правильном положении. Также важно отметить, что realWord может иметь более одного вхождения буквы, чем в guessWord. – Parseltongue
Я использовал этот код, чтобы сделать то, что сделал ваш метод «zip»: «allMatches = [match.start() для соответствия в re.finditer (re.escape (wordGuess), realWord)]« Немного более полезно, потому что он вернул начальный индекс каждой найденной буквы – Parseltongue
блестящий! большое спасибо – Parseltongue