0

このプログラムは、入力された文字列のアナグラムを見つけるために使用されます。可能性のあるアナグラムは、テキスト ファイル 'dict.txt' から取得されます。ただし、入力された文字列が辞書にないかどうかを確認しようとしています。入力された文字列が辞書にない場合、プログラムはアナグラムを検索せず、入力された文字列が辞書にないというメッセージを出力するだけです。現在、入力されたすべての文字列が辞書にないというコードが表示されていますが、これは正しくありません。

def anagram(word,checkword):
    for letter in word:  
        if letter in checkword:  
            checkword = checkword.replace(letter, '') 
        else:  
            return False  
    return True  


def print_anagram_list():
    if len(word_list) == 2:
        print ('The anagrams for', inputted_word, 'are', (' and '.join(word_list)))
    elif len(word_list) > 2:
        print ('The anagrams for', inputted_word, 'are', (', '.join(word_list[:-1]))+ ' and ' +(word_list[-1]))
    elif len(word_list) == 0:
        print ('There are no anagrams for', inputted_word)
    elif len(word_list) == 1:
        print ('The only anagram for', inputted_word, 'is', (''.join(word_list)))        


def anagram_finder():
    for line in f:
        word = line.strip()
        if len(word)==len(inputted_word):
            if word == inputted_word:
                continue
            elif anagram(word, inputted_word):
                word_list.append(word)
    print_anagram_list()


def check(wordcheck):
    if wordcheck not in f:
        print('The word', wordcheck, 'is not in the dictionary')


while True:
    try:
        f = open('dict.txt', 'r')
        word_list=[]
        inputted_word = input('Your word? ').lower()
        check(inputted_word)
        anagram_finder()
    except EOFError:
        break
    except KeyboardInterrupt:
        break
    f.close()
4

1 に答える 1

0

すべての単語を事前にリストに読み込みます。

with open('dict.txt', 'r') as handle:
    word_list = []

    for line in handle:
        word_list.append(line)

for word in fファイル内のすべての行のリストがあるため、コード内をに置き換えfor word in word_listます。

これで、単語がリストにあるかどうかを確認できます。

def check(wordcheck):
    if wordcheck not in word_list:
        print('The word', wordcheck, 'is not in the dictionary')

このwith構文により、後でファイルを閉じることなく、ファイルをきれいに開くことができます。withステートメントのスコープを終了すると、ファイルは自動的に閉じられます。


また、アナグラム コードを少し単純化することもできます。

def anagram(word, checkword):
    return sorted(word) == sorted(checkword)
于 2012-12-08T05:58:05.107 に答える