2017-01-12 12 views
-2

私はオンライン教科書を通じて完全な初心者の学習のpythonだと、これは演習の一つである:Pythonコードを編集して希望の回答のみを返す方法は?

は ファイルを読みとの行を探し、ファイル名の入力を要求するプログラムを作成し、形式:

X-DSPAM-自信:

あなたは、「X-DSPAM-自信:」で始まる行に遭遇0.8475離れラインを を引くには、ライン上の浮動小数点数を抽出します。これらの行を と数え、これらの行からスパム信頼値の合計を計算してください。 ファイルの最後に達したら、平均スパム信頼度 を出力します。

は、ファイル名を入力します。mbox.txt

平均スパム確信:MBOX-short.txt

平均スパム確信:0.750718518519

0.894128046745

をファイル名を入力します。これまでに書いたコードです:

fname = input('Enter file name: ') 

count = 0 
total = 0 
try: 
    fhand = open(fname) 
    for line in fhand: 
     if line.strip().startswith('X-DSPAM-Confidence:'): 
      count = count + 1 
      flt = float(line.split(':')[1]) 
      total = total + flt 
      print(total/count) 

except: 
    print('Bad file name: ', fname) 

出力は数字の長いリストですが、リストの最後の数字は 'mbox.txt'と 'mbox-short.txt'の両方に正しい答えを与えます。正解のみを印刷するには、このコードを変更する必要がありますか?

+2

最後の項目だけを印刷したい場合は、ループの後に 'print'を移動します。 – khelwood

答えて

1

ループが完了した後にのみ印刷してください。

fname = input('Enter file name: ') 

count = 0 
total = 0 
try: 
    fhand = open(fname) 
    for line in fhand: 
     if line.strip().startswith('X-DSPAM-Confidence:'): 
      count = count + 1 
      flt = float(line.split(':')[1]) 
      total = total + flt 
    print(total/count) 

except: 
    print('Bad file name: ', fname) 
+0

ありがとうございます。私は完全にそれを逃した。 – century530

関連する問題