Я пытаюсь написать функцию, которая принимает два пользовательских ввода: слово и максимальную длину. Функция читает из текстового файла (открывается ранее в программе), просматривает все слова, которые соответствуют максимальной заданной длине, и возвращает список слов из файла, который содержит все буквы в слове, которое пользователь дал , Вот мой код до сих пор:Сравните две строки, включая повторяющиеся буквы?
def comparison():
otherWord = input("Enter word: ")
otherWord = list(otherWord)
maxLength = input("What is the maximum length of the words you want: ")
listOfWords = []
for line in file:
line = line.rstrip()
letterCount = 0
if len(line) <= int(maxLength):
for letter in otherWord:
if letter in line:
letterCount += 1
if letterCount == len(otherLine):
listOfWords.append(line)
return listOfWords
Этот код работает, но моя проблема заключается в том, что она не учитывает дублирующие буквы в словах, прочитанных из файла. Например, если я введу «GREEN» в качестве otherWord, тогда функция возвращает список слов, содержащих буквы G, R, E и N. Я бы хотел, чтобы он возвращал список, содержащий слова, содержащие 2 E. Я предполагаю, что мне также нужно будет немного подкорректировать с частью letterCount, поскольку дубликаты повлияют на это, но сейчас я больше заинтересован в распознавании дубликатов. Любая помощь приветствуется.
Спасибо за это, он отлично работает! Любопытно, есть ли способ создать словарь букв и их количество без необходимости импортировать что-то из модуля, такого как Counter? – mrdziuban
Ничего, я понял это. Я разделил слово на буквы, а затем присваивал каждой букве счет в словаре, используя str.count(). Еще раз спасибо. – mrdziuban
Последний вопрос на самом деле: зачем нужно строительство ... еще нужно? После выражения for я хотел бы просто сказать «if c <= line.count (l): listOfWords.append (строка)», но я столкнулся с той же проблемой, что и раньше. Почему это так? – mrdziuban