2010-11-18 123 views
1

当我运行我的代码下面我得到一个:ValueError: invalid literal for int() with base 10: '0.977759164126'但我不知道为什么的Python:计算值的平均值在一个文本文件

file_open = open("A1_B1_1000.txt", "r") 
file_write = open ("average.txt", "w") 

line = file_open.readlines() 
list_of_lines = [] 
length = len(list_of_lines[0]) 
total = 0 


for i in line: 
    values = i.split('\t') 
    list_of_lines.append(values) 

count = 0 
for j in list_of_lines: 
    count +=1 

for k in range(0,count): 
    print k 
    list_of_lines[k].remove('\n') 



for o in range(0,count): 
    for p in range(0,length): 
     print list_of_lines[p][o] 
     number = int(list_of_lines[p][o])  
     total + number 
    average = total/count 
    print average 

我的文本文件看起来像:

0.977759164126 0.977759164126 0.977759164126 0.977759164126 0.977759164126
0.981717034466 0.981717034466 0.981717034466 0.981717034466 0.98171703446

数据系列按行排列,值在文本文件中以制表符分隔。文件中的所有行都具有相同的长度。

该脚本的目的是计算每列的平均值并将输出写入文本文件。

回答

9

int()用于整数(数字如7,12,7965,0,-21233)。你可能需要float()

+0

D'oh这么简单的答案。我的不好 – Harpal 2010-11-18 14:07:46

+1

所以点击勾来接受答案! – 2010-11-18 14:27:07

+0

哈哈它不会让我我不得不等待8分钟:( – Harpal 2010-11-18 14:36:21

0

Python在处理浮点上是有限的。这些都可以在这里很好地工作,但是对于较长的那些以及要使用十进制模块的算法。

import Decimal 
result = Decimal.Decimal(1)/Decimal.Decimal(5) 
print result 

链接到文件 http://docs.python.org/2/library/decimal.html

试着键入在1.1到空闲,看看你的结果是什么。