fi = open("score.csv","r")
fo = open("avg-score.txt","w")
ls = {}
x = []
sum = 0
for line in fi:
if line[0] == "课":
continue
x = line.strip(" ").split(",")[1:4]
sum = sum(x)/len(x)
d = {line.strip(" ").split(",")[0]:sum}
ls.update(d)
lis = list(ls.items())
for i in len(lis):
fo.write("{}:{}\n".format(lis[i][0],lis[i][1])
fi.close()
fo.close()
CSV文件的读写操作要用到csv模块的哈!你试试看下面代码能不能运行出来呢?
还有就是需要注意一下,打开文件最好确定一下编码格式encoding!
代码的缩进参照你写的改一下,不保证正确,你复制过来的代码没有缩进哈!
import csv
fi = open("score.csv","r",encoding="utf8")
reader = csv.reader(fi)
fo = open("avg-score.txt","w",encoding="utf8")
ls = {}
x = []
sum = 0
for line in reader:
if line[0] == "课":
continue
x = line.strip(" ").split(",")[1:4]
sum = sum(x)/len(x)
d = {line.strip(" ").split(",")[0]:sum}
ls.update(d)
lis = list(ls.items())
for i in len(lis):
fo.write("{}:{}\n".format(lis[i][0],lis[i][1]))
fi.close()
fo.close()
代码中问题比较多, 一是读取的数据行没有对回车进行处理,二是对每行字符串形式数据没有转换为可计算的数值,三是使用了内置函数名sum做变量名,相应作一下修改即可,修改代码如下,经测试可以解决你的问题:
fi = open("score.csv", "r",encoding='utf-8')
fo = open("avg-score.txt", "w", encoding='utf-8')
ls = {}
x = []
sums = 0
for line in fi:
if line[0] == "课":
continue
x = [float(s.strip()) for s in line.strip(" ").split(",")[1:4]]
sums = sum(x)/len(x)
d = {line.strip(" ").split(",")[0]: sums}
ls.update(d)
lis = list(ls.items())
for i in range(len(lis)):
fo.write("{}:{:.2f}\n".format(lis[i][0], lis[i][1]))
fi.close()
fo.close()
如有帮助,请点我回答右上方的采纳按钮采纳支持一下。
fclose(fi);
fclose(fo);