读取文件并计算平均分

文件如下

小白,88
小黑,90.5
小黄,
小花,33

第一次完成功能

score = []
total = 0
count = 0
with open('成绩',encoding='utf-8') as f: #以自动关闭文件的方法打开文件
    for line in f: #逐行循环文件,避免一次读取占用电脑内存
        score.append(line.split('')[1].strip()) #将分数取出放入列表
    for i in score:
        total += int(score[count]) #计算总分
        count += 1
    average = total/count
    print('平均成绩是%s'%average)

第二次优化

   (1) 可以边取成绩边统计,不需要额外创建数组再循环list,可以少一个循环

   (2) 添加非空校验,数组非空(如果数组只有名字没有,成绩),空字符串传转化为整型或者浮点型时会报错

   (3) 成绩不一定为整型,将数据调整为float

   (4) 平均分取小数点后两位

sum = 0
count = 0
with open('成绩',encoding='utf-8') as f:
    for line in f:
        if len(line.split(''))>1: #添加数组非空判断
            if line.split('')[1].strip(): #非空判断,空字符传转化为整型或者浮点型时会报错
            # 没有成绩,只计人数不计成绩,
                sum += float(line.split('')[1].strip()) #由int改为float,可以防止分数中有小数
        count += 1
    average = sum / count
    print('总分:{},人数:{},平均分是:{:.2f}'.format(sum,count,average))#平均分取小数点后两位

 

posted on 2018-04-12 04:41  忻冉然  阅读(8847)  评论(0编辑  收藏  举报