找回密码
 立即注册
搜索
热搜: Excel discuz
查看: 3005|回复: 0

[《从excel到python》笔记案例] 五、列表综合应用案例--按行对分数求和

[复制链接]

492

主题

7万

元宝

77万

积分

管理员

Rank: 9Rank: 9Rank: 9

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





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五花八门论坛 ( 豫ICP备15031300号-3 )

GMT+8, 2024-12-22 00:19 , Processed in 0.069345 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表