我是Python新手并且有一些任务我正在尝试获取从txt文件中读取的列表的总和和平均值。 我提出的代码是:
def FileToList (filename):
result = []
try:
f = open (filename,'r')
for l in f.readlines ():
result.append (l.strip())
return result
except IOError:
print ('File name not correct!')
return []
infile = raw_input ('Please enter file.txt : ')
lines = FileToList (infile)
for list in lines:
print (l)
它可以工作并返回所有值,但我在努力计算它们?
答案 0 :(得分:2)
我假设您的输入文件包含浮点数,每行一个数字。 以下程序忽略空白行,并在没有数字时处理边缘情况。
BTW我不喜欢你的异常处理。它隐藏了实际原因。恕我直言,最好不要处理这个例外。这将为用户提供有关确切错误的更好反馈。
def calc_stats(filename):
sum = 0.0
cnt = 0
for line in open(filename,"rt"):
line = line.strip()
if not line:
continue # skip blank lines
sum += float(line)
cnt += 1
return (sum, cnt)
infile = raw_input ('Please enter file.txt : ')
sum, cnt = calc_stats(infile)
if cnt == 0:
print("sum=%f, count=%d" % (sum, cnt))
else:
print("sum=%f, count=%d, average=%f" % (sum, cnt, sum/cnt))
答案 1 :(得分:0)
假设每行包含分隔的值(通过空格或逗号),您只需将值转换为float,然后计算总和和平均值:
for list in lines:
#convert to floats:
flist = map(float, list.split())
#calculate sum
s = sum(flist)
n = len(flist)
print "Sum: %f" % (s)
if n>0:
avg = s/n
print "Average: %f" % (avg)
注意:如果您的数据被逗号分割,则应使用list.split(',')
。