2013-06-16 2 views
0

이 프로그램은 문자 조합의 목록을 생성하고 영어 단어인지 확인하지만 프로그램이 일부 단어를 남기고 있습니다. 사전 파일을 확인 했는데도 단어가 출력되었지만 아직 출력되지 않았습니다. 왜 프로그램이 homecornbarn과 같은 결과를 많이 남기고 있는지 말해주십시오. 단어가 빠져 있습니다

import itertools 
#http://www.puzzlers.org/pub/wordlists/engwords.txt 

with open('/Users/kyle/Documents/english words.txt') as word_file: 
    english_words = set(word.strip().lower() for word in word_file if len(word.strip()) == 4) 

for p1 in itertools.combinations('abcdefghijklmnopqrstuvwxyz', 4): 
    word = ''.join(p1) 
    if word in english_words: 
     print '{} is {}'.format(word, word in english_words) 

난 당신이 product ( Cartesian product)을 찾고 http://www.puzzlers.org/pub/wordlists/engwords.txt

+0

여기서 'itertools.product'를 사용해야합니다. –

답변

1

을 사용하고있는 사전이다, 편지 알파벳 순서에 없거나 중복이 단어를 생산하지 않습니다하지 combinations (문자) :

import string 

for letters in itertools.product(string.ascii_lowercase, repeat=4): 
    word = ''.join(letters) 

    if word in english_words: 
     print word 

당신은이 속도를해야하는 대신에 문자열의 튜플을 사용할 수

import string 
from itertools import product 
#http://www.puzzlers.org/pub/wordlists/engwords.txt 

with open('/Users/kyle/Documents/english words.txt', 'r') as word_file: 
    english_words = set(tuple(word.strip().lower()) for word in word_file if len(word.strip()) == 4) 

words = english_words.intersection(product(string.ascii_lowercase, repeat=4)) 
+0

그게 문제를 해결합니다. 고마워요. –