赵乾舟 发表于 2022-2-17 15:24:54

五、列表综合应用案例--按行对分数求和


需求:本案例要求对分数比中的每个人1-12月份进行判断,对大于或等于80分的分数进行求和,然后写入汇总分数单元格。
思路:先按照每行获取数据,每一行数据生成一个列表,然后再通过【1:-1】去掉开头和末尾的数据,获取到1-12月份的数据,然后再判断数字是否大于等于80,把大于80的数字加入到新列表,对新列表求和,把汇总分数写入到N列。
先上书中代码:
import xlrd #导入xls文件读取库。
from xlutils.copy import copy #导入工作簿复制函数。
wb=xlrd.open_workbook('Chapter-5-8-1.xls') #读取工作表。
ws=wb.sheet_by_name('分数表') #读取工作表
nwb=copy(wb);nws=nwb.get_sheet('分数表') #复制工作簿及读取副本的工作表。
lst=[] #初始化lst变量为空列表。
for row_num in range(1,ws.nrows): #循环读取每行数据。
    row_vals=ws.row_values(row_num) #通过切片获取每行的数字区域。
    for val in row_vals: #循环row_vals列表中的每个数字赋值给val变量。
      if val>=80: #如果val变量中的数字大于等于80.
            lst.append(val) #则将数字添加到lst列表。
            #lst += #则将数字累积到lst列表。与上一行代码二选一
    nws.write(row_num,13,sum(lst)) #将lst列表求和,并写入副本工作表的单元格。
    lst=[] #重置lst变量为空列表。
nwb.save('Chapter-5-8-1.xls') #保存工作簿。再上我写的代码:
import xlrd
from xlutils.copy import copy
wb = xlrd.open_workbook('Chapter-5-8-1.xls')
ws = wb.sheet_by_index(0)
nwb = copy(wb)
nws = nwb.get_sheet('分数表')
for row in range(1,ws.nrows):
    print(row)
    info = ws.row_values(row)
    socre = info
    print(info)
    print(socre)
    list = []
    for i in socre:
      if i >= 80:
            list.append(i)
      result = sum(list)
    nws.write(row,13,result)
nwb.save('aa.xls')




页: [1]
查看完整版本: 五、列表综合应用案例--按行对分数求和