本 think python からこの演習を試みていました。ファイルから単語リストを読み取り (セクション 9.1 を参照)、アナグラムであるすべての単語のセットを出力するプログラムを作成します。
私の戦略は、ファイルを取得し、各単語をソートして、文字列のリスト (listy と呼ばれる) に保存することです。次に、元の単語リストをもう一度調べて、listy と比較します。同じ場合、ソートされた単語をキーとして保存し、元のファイルのソートされていない単語を値として辞書に保存します。次に、各キーの下のすべての値を単純に出力します。それらはアナグラムでなければなりません。
私が作成した最初の関数は、listy を生成することでした。コードを分解してチェックしたところ、問題ないようです。ただし、コンパイルして実行すると、無限ループに遭遇したかのように Python がハングします。なぜそうなのか誰か教えてもらえますか?
def newlist():
fin = open('words.txt')
listy = []
for word in fin:
n1 = word.strip()
n2 = sorted(n1)
red = ''.join(n2)
if red not in listy:
listy.append(red)
return listy
newlist()