В основном у меня есть скрипт на Python, который принимает несколько букв, получает каждую комбинацию из них, а затем проверяет, является ли это реальным словом (по-видимому, похоже, что-то похожее), но по какой-то причине оно возвращает одни и те же слова несколько раз, что я не хочу, чтобы это сделать, сценарий выглядит следующим образом:Сценарий возвращает одно и то же значение несколько раз
with open("dictionary.txt") as word_file:
english_words = set(word.strip().lower() for word in word_file)
def is_english_word(word):
return word.lower() in english_words
print is_english_word("ham")
print is_english_word("zz")
a = raw_input("Please enter first letter: ")
b = raw_input("Please enter second letter: ")
c = raw_input("Please enter third letter: ")
d = raw_input("Please enter fourth letter: ")
e = raw_input("Please enter fifth letter: ")
check =[a,b,c,d,e]
def get_combos(list):
import itertools
count = len(list)
got = []
combos =[]
while count > 0:
for a in itertools.permutations(list,count):
if a in got:
got.append(a)
else:
got.append(a)
combos.append(a)
count = count - 1
for a in combos:
strip_combos(a)
def strip_combos(list):
count = ''
words = []
for entry in list:
count = count + entry
words.append(count)
check_combo(words)
def check_combo(list):
words = []
got = []
for entry in list:
if is_english_word(entry):
if entry not in words:
print entry
words.append(entry)
get_combos(check)
Сейчас она работает, как я тоже имел в виду лишь печать слов, которые в словаре, но он будет печатать то же самое слово много раз, например, если имеются буквы:
a, c, e, s
Он будет возвращаться, как и во всех случаях, которые он показывает в списке, хотя, насколько я могу судить, я пропускаю один и тот же результат много раз в процедуре check_combo, имея полученный и список слов
У меня есть ощущение, что проблема может возникнуть из процедуры get_combos в цикле while, хотя я пробовал модифицировать почти все, но ничего не имею, поэтому я обращаюсь к тем, кто более осведомлен, чем я, за помощью.
Некоторые строки документации/комментарии может помочь. Не совсем ясно, что, например, должно делать strip_combos. – weronika
Строки уже итерабельны. Не нужно преобразовывать его в список. Вместо того, чтобы просить каждую букву отдельно, выполните: 'check = raw_input (« Пожалуйста, введите 5 буквенных слов: »)' –