【2019.08.06 Python每日一题】答案 —— 求和和求平均from文件中数据

def file_sum_mean(filename):
    with open(filename,'r+') as f:
        ls = [line.strip().split(',') for line in f] #读取文件内容,形成两层列表嵌套

        # 分别把三列数据写进三个列表里,也可以写一个循环,格式化这个过程
        ls_height = [int(line[1]) for line in ls[1:]]
        ls_weight = [int(line[2]) for line in ls[1:]]
        ls_shiliang = [int(line[3]) for line in ls[1:]]
        ls_shabiIndex = [int(line[4]) for line in ls[1:]]

        # 把上述列表放入一个列表ls_ls里,方便遍历
        ls_ls = [ls_height,ls_weight,ls_shiliang,ls_shabiIndex]

        #计算sum值,放到一个列表里sum_ls,再合并成一个用逗号分隔,\n结尾的字符串sum_str,方便写入文件
        sum_ls = [round(sum(ls)) for ls in ls_ls]
        sum_str = ','.join(list(map(str,sum_ls))) + '\n'

        #计算mean值,放到一个列表里
        mean_ls = [str(round(value/3)) for value in sum_ls]
        mean_str = ','.join(mean_ls) + '\n'

        #写入文件,注意,先加一个回车,因为原文件最后一行没有回车
        f.write('\n')
        f.write('Sum,'+ sum_str)
        f.write('Mean,' + mean_str)

filename = r'C:/Users/kongy/Desktop/input_file_20190806.csv'
file_sum_mean(filename)

解法二:(与解法一的区别 原行5-12被更改为 新行5-12,此加入了批量生成列表的做法)

def file_sum_mean(filename):
    with open(filename,'r+') as f:
        ls = [line.strip().split(',') for line in f] #读取文件内容,形成两层列表嵌套

        # 分别把三列数据写进三个列表里,用第一行的列名为新列表命名,并将新生成的三个列表放入ls_ls
        name_ls = [(index,name) for index,name in enumerate(ls[0])]
        #批量赋值列表
        ls_ls = []
        for i,name in name_ls[1:]:
            globals()[name] = [int(line[i]) for line in ls[1:]]
            ls_ls.append(globals()[name])


        #计算sum值,放到列表sum_ls里,再合并成用逗号分隔,\n结尾的字符串sum_str,方便写入文件
        sum_ls = [round(sum(ls)) for ls in ls_ls]
        sum_str = ','.join(list(map(str,sum_ls))) + '\n'

        #计算mean值,放到列表mean_ls,再合并成用逗号分隔,\n结尾的字符串mean_str,方便写入文件
        mean_ls = [str(round(value/3)) for value in sum_ls]
        mean_str = ','.join(mean_ls) + '\n'

        #写入文件,注意,先加一个回车,因为原文件最后一行没有回车
        f.write('\n')
        f.write('Sum,'+ sum_str)
        f.write('Mean,' + mean_str)

filename = r'C:/Users/kongy/Desktop/input_file_20190806.csv'
file_sum_mean(filename)

 

 

你可能感兴趣的:(【2019.08.06 Python每日一题】答案 —— 求和和求平均from文件中数据)