Я занимаюсь разработкой словесной игры, и мне нужна помощь с одной из функций.Функция получает 2 входа и возвращает true или false.
На входе my_word содержатся угаданные буквы, которые соответствуют определенному слову.Ввод other_word - это какое-то слово для сравнения с my_input.примеры:
>>> match_with_gaps("te_ t", "tact")
False
>>> match_with_gaps("a_ _ le", "apple")
True
>>> match_with_gaps("_ pple", "apple")
True
>>> match_with_gaps("a_ ple", "apple")
False
Моя проблема - применить его для возврата False, как в предыдущем примере, и я не уверен, как это сделать.Это то, что я сделал до сих пор.Это работает, но не для случая, когда одно угаданное письмо в my_word появляется 2 раза в other_word.В этом случае я возвращаю истину, но она должна быть ложной.Входные данные должны быть точно такими же, как в примере (пробел после подчеркивания).
def match_with_gaps(my_word, other_word):
myWord = []
otherWord = []
myWord_noUnderLine = []
for x in my_word:
if x != " ": # remove spaces
myWord.append(x)
for x in myWord:
if x != "_": # remove underscore
myWord_noUnderLine.append(x)
for y in other_word:
otherWord.append(y)
match = ( [i for i, j in zip(myWord, otherWord) if i == j] ) # zip together letter by letter to a set
if len(match) == len(myWord_noUnderLine): # compare length with word with no underscore
return True
else:
return False
my_word = "a_ ple"
other_word = "apple"
print(match_with_gaps(my_word, other_word))