2016-08-12 5 views
2

Pythonにはまったく新しいですが、Scrabble anagramソルバを作成しようとしています。テキストファイルを作成し、ユーザーに7文字のラックを与えてアナグラムを確認します。私はis_anagram関数に取り組んでいて、sorted()を使用してアルファベット順に単語の文字のリストを作成し、次にifステートメントを使用して、辞書からソートされた単語がソートされた文字のラックと等しいかどうかを確認します。検索されている文字は長いリストから来るので、リストには"\n"という単語が作成されます。私はそれを比較する前にリストから'\n'を削除するように反復を設定しようとしていますが、なんらかの理由でリストをマイナス'\n'の代わりにNoneとして返しています。理由は分かりません。誰でも助けることができますか?コードは次のとおりです。リストを反復処理して( ' n')リストを削除しようとすると、リストの要素の代わりにNoneが返される

def is_anagram(word): 
    scrabble_dict = open('sowpods.txt') 
    for x in scrabble_dict: 
     x = sorted(x) 
     x = x.remove('\n') 
     word = sorted(word) 
     if word == x: 
      print(word) 
+0

チェック:http://stackoverflow.com/questions/26766587/removing-item-from-list-causes-the-list-to-become-nonetype は基本的に削除はそのように動作しません。 'x = x.remove( '\ n')' x'remove( '\ n') 'だけで十分です。 – Fma

+0

質問に答える!ありがとう! –

+0

それを並べ替えた後に単語が印刷されません。また、プレーヤーが自分のラックにある文字を 'word'ではなく、' x'が辞書の実際の単語ですか?私の理解が正しいならば、ソートする前に 'x'のコピーを保存したいのですが、一致するものがあれば、保存されたコピーをプリントして実際に単語を得るでしょうか?また、 'word x'の方が' word x'よりも小さい方が、 'word'よりも小さい辞書項目を確認できるので、より良い呼び出しになるかもしれません。 – dhdavvie

答えて

2

改行を削除した後でxをもう一度割り当てる必要はありません。この質問

def is_anagram(word): 
    scrabble_dict = open('sowpods.txt') 
    for x in scrabble_dict: 
     x = sorted(x) 
     x.remove('\n') 
     word = sorted(word) 
     if word == x: 
      print(word) 
関連する問題