2017-01-12 25 views
-2

我是通過網上購書一個完整的初學者學習蟒蛇,這是演習之一:如何編輯Python代碼以僅返回所需的答案?

寫一個程序,提示輸入文件名,然後通過 文件閱讀和查找的行形式:

X-DSPAM-信心:0.8475

當你遇到與「X-DSPAM-信心:」開始的行拉 開行提取就行了浮點數。計數 這些行,然後計算這些行中垃圾信任值 的總數。當您到達文件的末尾時,打印出平均垃圾郵件信心 。

輸入文件名:mbox.txt

平均垃圾郵件可信度:0.894128046745

輸入文件名:MBOX-short.txt

平均垃圾郵件可信度:0.750718518519

這是我迄今爲止編寫的代碼:

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