Я работаю над созданием приложения типа «Lin go» в Python на основе игрового шоу. Генерируется случайное слово из 5 букв, и пользователь должен угадать, что это за слово, после того, как ему будет дана первая буква этого слова, а также 4 символа «_» для обозначения пропущенных букв. Существует 5 различных сценариев ios, которые могут произойти, и они перечислены ниже:
- Не угадываются правильные буквы, что означает, что все символы '_' остаются
- Каждая правильно угаданная буква означает '_' заменяется правильной буквой в случайном слове
- Если угадываемая буква находится в случайном слове, но не в том месте, «_» заменяется прописной формой этой буквы
- Если заглавная буква угадывается в правильном месте при следующей попытке, символ в этом месте заменяется этой правильной буквой, а заглавная буква в этом месте заменяется другой правильно угаданной буквой, если пользователь угадывает более одной правильной буквы. letter
- Заглавная буква угадывается в правильном месте, но никакие другие правильные буквы не угадываются. Это означает, что заглавная буква в предыдущем месте заменяется символом '_'.
Примечание: я объясняю, что это за сценарий ios, чтобы дать вам, ребята, некоторый контекст того, что я пытаюсь сделать в моей программе, и как работает игровое шоу «Lin go», если вы не слышали или не смотрели шоу раньше.
Итак, у меня возникла проблема с реализацией сценария 5. Я считаю способ go об этом заключается в использовании строковой функции replace (), поскольку она должна заменить все вхождения определенного символа на новый символ. «Слово» - это список, который отображается после того, как пользователь угадывает. Однако мне нужна строка, чтобы функция replace () работала, поэтому я создаю строку на основе элементов списка слов.
Однако, когда я запускаю свою программу, функция replace выполняет не работает, так как заглавная буква остается даже после того, как пользователь правильно угадает положение этой заглавной буквы. Я попытался отладить свой код, распечатав, какой должна быть «строка слова», и заметил, что она всегда печатает первый символ случайного слова вместе с 4 «_». Я не понимаю этого, так как «ответ» также является строкой, и он распечатывает обновленную строку с правильно угаданными буквами и буквами, которые присутствуют в слове после того, как предположения сделаны. Любая помощь приветствуется.
import random
file = "words.txt" #File with 5 letter words
f = open(file, 'r')
lines = f.readlines()
randomword = random.choice(lines) #generate random 5 letter word from file
word = [randomword[0], '_', '_', '_', '_']#part of word that is being shown to user
wordstring = word[0] + word[1] + word[2] + word[3] + word[4]
print(randomword[0])
print(randomword)
for i in range(1,6): #take 5 guesses at what random word is
guess = input("Guess the word: ")
for j in range(1,5): #check to see if other 4 letters of random word match the letters in the guess word
if(guess[j] == randomword[j] and word[j] == '_'): #replace empty character with letter of random word if correctly guessed
word[j] = randomword[j]
if(guess[j] in randomword and word[j] == '_'): #replace empty character with uppercase letter of guessed letter if that letter is in the randomword
word[j] = guess[j].upper()
if(guess[j] == randomword[j] and word[j] != '_'): #replace uppercase letter with correctly guessed letter in word
word[j] = randomword[j]
if(guess[j] == randomword[j] and guess[j].upper() in word): #upper case letter is guessed in correct spot, but no other letters are correcty guessed
wordstring.replace(word[j].upper(), '_')
answer = word[0] + ' ' + word[1] + ' ' + word[2] + ' ' + word[3] + ' ' + word[4] #convert word array to string to be shown to user
#answer = wordstring[0] + ' ' + wordstring[1] + ' ' + wordstring[2] + ' ' + wordstring[3] + ' ' + wordstring[4]
print(answer)
if(answer == randomword.strip()):
print("You win!")
break
if(answer != randomword.strip()):
print("You loose!")
print("The correct word is: " + randomword.strip())