我不断得到零分错误

时间:2014-07-17 12:54:45

标签: python python-2.7

编写一个提示输入文件名的程序,然后打开该文件并读取文件,查找表单行: X-DSPAM-置信度:0.8475 对这些线进行计数并从每条线中提取浮点值,并计算这些值的平均值并生成输出

这是我的python代码

# Use the file name mbox-short.txt as the file name
fname = raw_input("Enter file name: ")
fh = open(fname)
inp = fh.read()
count = 0
total = 0
for line in inp:
    if not line.strip().startswith("X-DSPAM-Confidence:") : continue
    pos = line.find(':')
    num = float(line[pos+1:]) 
    total = float(total + num)
    count = float(count + 1)
print 'Average spam confidence:', float(total/count)

我真的不知道发生了什么事,因为我在第13行(代码的最后一行)不断出现零分割错误

3 个答案:

答案 0 :(得分:1)

找不到字符串X-DSPAM-Confidence:会发生什么?

如果你的代码没有找到那个字符串,那么Count var总是为零,所以这是一种你会得到零除错误的情况。

在最后计算之前尝试检查Count的值...

也许:

If Count>0 print 'Average spam confidence:', float(total/count)

(这可能不是正确的python语法,因为我从未使用过python)

答案 1 :(得分:1)

您的if语句正在跳过for循环的其余部分,因为line.strip.startwith("X-DSPAM-Confidence:")总是计算为false。

然后,count永远不会递增,因此整个时间保持为0,导致你的除法为零错误。

答案 2 :(得分:0)

我认为它没有正确读取文件所以它不会进入for循环

fh = open(fname)
inp = fh.read()

试试这个并检查它是否进入了

fname = raw_input("Enter file name: ")
fh = open(fname)
inp = fh.read()
count = 0
total = 0
for line in inp:
  print inp