2016-09-26 7 views
0

テキスト文書を読み込んで文書中で最も長い単語を出力するプログラムを作成しようとしています。最長の単語が複数ある場合(つまり、長さが等しい場合)、すべて同じ順序で出力する必要があります。最も長い単語が犬と猫だったらたとえば、あなたのコードが生成する必要があります:テキスト文書から最大長の単語を選択する方法

犬猫

私はトラブル等しい最大長さの多数の単語を選択し、それらを印刷する方法を見つけるのを持っています。あなたがいる行うために必要なもの

fh = open('poem.txt', 'r') 

longestlist = [] 
longestword = '' 

for line in fh: 
    words = (line.strip().split(' ')) 
    for word in words: 
     word = ''.join(c for c in word if c.isalpha()) 
     if len(word) > (longestword): 
      longest.append(word) 

for i in longestlist: 
    print i 
+0

は '整数でlongestword'ないでしょうか?長い単語を見つけるたびに更新する必要があります。 – afsafzal

+0

あなたの小切手について考えてみましょう。長さが等しい場合は、この単語を最長のリストに追加してください。単語の長さがlongestwordの長さよりも長い場合は、新しい最長の単語がありますので、古いリストを消去し、新しい最長の単語を含む新しいリストを作成する必要があります。 –

答えて

1

最初に、withasというステートメントを使用することをお勧めします。ステートメントを単純化するだけで、あなたが混乱しないようにします。だから、

fh = open('poem.txt', 'r')

with open('poem.txt','r') as file:

になり、あなたは言葉でだけ心配しているので、あなたにも使用することがあります内蔵のスタートから:

words = file.read().split() 

次に、max word length(0に初期化)のカウンタと空のリストを設定するだけです。単語が最大長を壊した場合は、新しいmaxlengthを設定し、その単語のみを含むようにリストを書き換えます。 maxlengthに等しい場合は、リストに含めます。次に、リストのメンバーを印刷します。 .isalpha()のようないくつかのチェックを含める場合は、コードの関連部分に自由に入れてください。

maxlength = 0 
longestlist = [] 
for word in words: 
    if len(word) > maxlength: 
     maxlength = len(word) 
     longestlist = [word] 
    elif len(word) == maxlength: 
     longestlist.append(word) 
for item in longestlist: 
    print item 

-MLP

0

を読み取るため

は、ファイルを開きます。これは、私はちょうど同じ最大長のすべての単語を選択する方法を考えるのに苦労しています限り、私が得ているようです今まで見たことのある最長の単語のリストを保持し、最も長い長さを保つ。たとえば、これまでの最長の単語の長さが5の場合は、5文字のすべての単語のリストが表示されます。 6文字以上の単語が表示されたらすぐにそのリストをクリアし、その中にその単語を1つ入れ、最長の長さも更新します。最長と同じ長さの単語を訪問した場合は、それらをリストに追加する必要があります。

P.S.私はあなたがそれを自分で行うことができるようにコードを書いていませんでした。

関連する問題