Надеюсь, я правильно сформулировал свой вопрос.
По сути, вот что я пытаюсь сделать: используя список местоимений, я должен искать слова в отдельном списке, состоящем из двух из указанных местоимений (то есть «юность» будет найдена и распечатана после сопоставляя "твое" и "ты")
Что происходит не так: я точно нахожу слова, но проблема здесь в том, что пример в названии. Когда я запускаю программу, у меня будут результаты, которые соответствуют двум подстрокам друг в друге (т. Е. «Youn появляется, потому что видит« Ты »и« Твой »или« Наш »).
Я использую Python 3.x, и это один из разделов проблемы для домашнего задания, и это последний, который мне осталось сделать. Я пробовал довольно много решений, но ни одно из них не сработало. Один из них создавал массив копий, который вместо этого проверялся, и удалял каждый элемент по мере продвижения. Другой использовал пустой список, в который было добавлено первое совпадение, в котором затем сравнивалось бы следующее совпадение на случай, если следующее совпадение будет в первом совпадении. Но независимо от того, что я пытаюсь сделать, я постоянно получаю плохие совпадения, или ничего не печатается, потому что счетчик больше не увеличивается.
Список местоимений, с которыми мне нужно работать:
pronouns = ['thou', 'thee', 'thine', 'thy', 'i', 'me', 'mine', 'my', 'we',
'us', 'ours', 'our', 'you', 'yours', 'your', 'he', 'him', 'his',
'she', 'her', 'hers', 'it','its', 'they', 'them','theirs','their']
Пример списка слов:
wordList: = ['a', 'youthem', 'thyme', 'adathey', 'bathem', 'writmaker',
'writmaking', 'youngling', 'your', 'yourn', 'yours', 'youse', 'youthsome',
'youthtide', 'youthy', 'zygomaticosphenoid', 'zymite', 'zymosimeter',
'zymosthenic', 'zythem']
Мой код:
for line in wordList:
hasBoth = 0 #Counter where the program will not print a word
#if it does not equal 2.
for pnoun in pronouns:
#print(str(hasBoth) + " " + str(nounCopy)) #Test to check what's
#triggering some of the words.
if hasBoth == 2: #Breaks the loop if both words are found.
break
if pnoun not in line: #If there's no match, do nothing and
#continue
continue
elif pnoun in line: #If match, add 1 to counter and continue
hasBoth += 1
continue
else: #just in case
break
if hasBoth == 2:
print(line + "\n") #Print the line that was a success
hasBoth = 0 #reset the counter
continue
elif hasBoth != 2: #If no match, just reset the counter and move on
hasBoth = 0 #reset the counter
continue
else: #Another one for just in case something else happens
print("Ya'll broke somthin")
break
Ожидаемый результат должен быть:
youthey
thyme
youthy
Но фактический результат - весь список минус первый элемент.