Попытка изменить каждое появление одного и того же символа в строке - PullRequest
0 голосов
/ 03 августа 2020

Я работаю над созданием приложения типа «Lin go» в Python на основе игрового шоу. Генерируется случайное слово из 5 букв, и пользователь должен угадать, что это за слово, после того, как ему будет дана первая буква этого слова, а также 4 символа «_» для обозначения пропущенных букв. Существует 5 различных сценариев ios, которые могут произойти, и они перечислены ниже:

  1. Не угадываются правильные буквы, что означает, что все символы '_' остаются
  2. Каждая правильно угаданная буква означает '_' заменяется правильной буквой в случайном слове
  3. Если угадываемая буква находится в случайном слове, но не в том месте, «_» заменяется прописной формой этой буквы
  4. Если заглавная буква угадывается в правильном месте при следующей попытке, символ в этом месте заменяется этой правильной буквой, а заглавная буква в этом месте заменяется другой правильно угаданной буквой, если пользователь угадывает более одной правильной буквы. letter
  5. Заглавная буква угадывается в правильном месте, но никакие другие правильные буквы не угадываются. Это означает, что заглавная буква в предыдущем месте заменяется символом '_'.

Примечание: я объясняю, что это за сценарий 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...