2016-12-06 11 views
0

私の関数はファイル名である文字列を入力として取り、辞書を返さなければなりません。辞書にはキーと値のペアがあり、キーは単語の長さに対応する整数で、値はその長さのファイルに表示される単語の数です。同じ長さの単語が出現する

ファイルには、次の文で構成されています

and then the last assignment ended and everyone was sad 

だから、理論的に返さ言葉遣いは次のようになります。

""" 
COMP 1005 - Fall 2016 
Assignment 10 
Problem 1 
""" 
def wordLengthStats(filename): 
    file = open(filename, 'r') 
    wordcount={} 
    for line in file.read().split(): 
     if line not in wordcount: 
      wordcount[line] = 1 
     else: 
      wordcount[line] += 1 
    for k,v in wordcount.items(): 
     print (k, v) 
    return None 

def main(): 
    ''' 
    main method to test your wordLengthStats method 
    ''' 
    d = wordLengthStats("sample.txt") 
    print("d should be { 3:5, 4:2, 5:1, 8:1, 10:1} ") 
    print("d is", d) 

if __name__ == '__main__': 
    main() 

{ 3:5, 4:2, 5:1, 8:1, 10:1} 

をこれまでのところ、私はこれを持っています文章は単なる例であり、私はそれがすべての入力が機能するようにする必要があります。この問題に近づくための助けがあれば幸いです。文章中のすべての単語について、あなたは単語の長さが鍵となる辞書にエントリを追加する必要があり

+0

が 'ライン場合語数ではありません:' - あなたは 'つもりですwordcountにlen(行)がない場合: '?キーは単語ではなく単語*の長さ*であるはずです。 –

+0

だから何が問題なの? – martineau

答えて

0

def wordLengthStats(filename): 
    file = open(filename, 'r') 
    wordcount={} 
    for word in file.read().split(): 

     key = len(word) 

     if key not in wordcount: 
      wordcount[key] = 1 
     else: 
      wordcount[key] += 1 

    for k,v in wordcount.items(): 
     print (k, v)        
    return None 
+0

ありがとう!動作します – comp1005

+0

ファイルを閉じることはありません。 'with'ブロックを使うべきです。 –

+0

確かに、コードの関連部分を編集するだけです – elelias

関連する問題