§01 期中成绩整理


2021年信号与系统期中考试采取了 考试宝进行课堂练习 方式进行。但是使用考试宝进行测试有以下两方面的问题:

  • 考试宝只能接受姓名和手机号,无法接受学号作为标识符;
  • 考试宝在考试过程中有的时候会自动退出,所以建议之后的考试宝使用多个题库,每个题库中的题目不超过10个题目;

一、分析考试成绩

利用姓名匹配的方式将考试宝导出的得分汇集到统一的学生成绩表格中。下面是考试宝导出的成绩表格结构:

▲ 图1.1 考试宝导出的EXCEL表格结构

1、将EXCEL转换成LIST

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# METEST1.PY                   -- by Dr. ZhuoQing 2021-07-01
#
# Note:
#============================================================
from headm import *
import inforsub
meorg = tspstring2text("meorg")
listdata = inforsub.showexcel(meorg)
tspsave('melist', listdata=listdata)
printf('\a')
#------------------------------------------------------------
#        END OF FILE : METEST1.PY
#============================================================

2、分数统计

(1)原始数据
[41.0, 43.0, 41.0, 38.0, 37.0, 42.0, 34.0, 35.5, 45.5, 36.0, 42.5, 43.0, 47.0, 46.0, 43.5, 42.0, 40.5, 22.5, 46.0, 43.0, 43.0, 46.5, 46.0, 45.0, 42.5, 43.0, 27.5, 48.0, 36.0, 46.0, 47.0, 42.0, 31.0, 41.5, 42.0, 40.5, 44.0, 40.5, 47.0, 33.0, 43.5, 37.5, 42.0, 37.0, 38.5, 26.5, 48.0, 45.0, 38.5, 37.0, 45.0, 39.5, 39.0, 36.0, 46.0, 31.0, 32.5, 44.0, 37.0, 22.5, 41.0, 41.5, 43.0, 46.0, 42.5, 40.0, 43.0, 37.0, 43.0, 36.0, 43.5, 40.0, 40.0, 44.0, 29.0, 35.0, 37.5, 37.5, 40.5, 41.5, 33.0, 32.0, 32.5, 40.0, 46.0, 36.0, 29.5, 41.5, 37.0, 41.0, 34.5, 47.0, 46.0, 43.0, 40.0, 36.0, 46.0, 34.5, 39.0, 44.0, 43.0, 40.0, 41.0, 39.0, 45.0, 44.0, 32.0, 39.5, 39.0, 38.0, 41.5, 40.5, 37.5, 39.0, 39.0, 35.0, 27.0, 42.0, 40.5, 45.0, 30.0, 46.5, 44.0, 36.0, 39.0, 38.0, 40.0, 26.5, 33.5, 35.0, 36.0, 43.0, 36.5, 36.0, 37.5, 26.0, 40.0, 45.0, 38.5, 34.0, 34.5, 35.0, 42.0, 41.0, 45.0, 42.0, 42.0, 43.0, 43.0, 33.0, 40.0, 43.0, 34.5, 42.0, 38.0, 45.0, 46.5, 44.0, 40.0, 39.0, 38.0, 43.0, 42.0, 40.5, 43.0, 34.0, 46.0, 38.0, 23.5, 31.5, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 4.0, 1.0, 3.0, 0.5, 37.5, 1.0, 1.0, 1.0, 43.0]
【表1-1 各分数段的人数】
0.0-4.8 4.8-9.6 9.6-14.4 14.4-19.2 19.2-24.0 24.0-28.8 28.8-33.6 33.6-38.4 38.4-43.2 43.2-48.0
13 0 0 0 3 5 14 40 72 38
listdata = tspload('melist', 'listdata')
scoredim = []
namedim = []
for l in listdata:scoredim.append(float(l[7]))namedim.append(l[0])
ret = plt.hist(scoredim, 10)
result = '|'.join(['%3.1f-%3.1f'%(s1,s2) for s1,s2 in zip(ret[1][:-1], ret[1][1:])])
result = result + "\n" + '|'.join(['--']*10)
result = result + "\n" + '|'.join(["%d"%s for s in ret[0]])
printf(result)
plt.xlabel("分数段")
plt.ylabel("频次")
plt.grid(True)
plt.tight_layout()
plt.show()
(2)统计分布图

▲ 各个分数段的统计分布

二、合并到最终表格

将上述数据通过姓名匹配的方式合并到最后的表格中。

出现的无关姓名如下:

ERROR: 杨雨翔 ,34.5
ERROR: 卓晴 ,1.0
ERROR: 刘连臣 ,1.0
ERROR: 赵雨晴 ,0.0
ERROR: 叶俊 ,0.0
ERROR: 测试 ,0.0
ERROR: ?ss ,4.0
ERROR: 张东东 ,1.0
ERROR: 卓萍萍 ,3.0
ERROR: 张祖炎 ,0.5
ERROR: 杨牧言 ,37.5
ERROR: 张科雯 ,1.0
ERROR: 张桌子 ,1.0
ERROR: 张几十块 ,1.0
ERROR: 1 ,43.0
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# METEST1.PY                   -- by Dr. ZhuoQing 2021-07-01
#
# Note:
#============================================================from headm import *
import pandas as pdlistdata = tspload('melist', 'listdata')resultfile = tspstring2text('meresult')
printf(resultfile)#------------------------------------------------------------
def setexcelcellstring(filename, sid, col, num):excelfile = pd.read_excel(filename, sheet_name='sheet1')rowid = -1sid = sid.strip(' ')for id, content in excelfile.items():if id == '姓名':content = [str(s) for s in content]for idd,s in enumerate(content):if s.find(sid) >= 0:rowid = iddbreakif rowid >= 0: breakif rowid < 0:return rowidexcelfile[col] = excelfile[col].astype(str)excelfile.at[rowid, col] = numexcelfile.to_excel(filename, sheet_name='sheet1', index=False)return rowid#------------------------------------------------------------
error = 0
for l in listdata:name = l[0]score = l[7]ret = setexcelcellstring(resultfile, name, '分数', score)if ret < 0:error += 1printf("ERROR:%s,%s"%(name, score))#    breakprintf('\a')#------------------------------------------------------------
#        END OF FILE : METEST1.PY
#============================================================

§02 课堂交互成绩


一、课堂交互信息

课堂交互信息记录在TEASOFT服务器中的如下目录中:

F:\Teaching\ServerDatabase\name

主要的记录文件为: PHONENAME_DATA.txt。它的主要结构为:

江群 01055008217 16 3 11 10 10 0 0 631 5 0 0 0 0 0 0 0 0 0 0 0
邢森 04024822972 23 2 11 10 10 0 0 685 10 0 0 0 0 0 0 0 0 0 0 0
张世乙 02991576239 13 0 4 3 3 0 1 90 3 1 0 0 0 0 0 0 0 0 0 0
陈星 03735025025 12 0 11 10 10 0 0 585 6 0 0 0 0 0 0 0 0 0 0 0
李可伊 04200304045 14 0 12 12 12 0 3 610 5 0 0 0 0 0 0 0 0 0 0 0
袁梦 08833104544 14 1 11 10 10 0 1 463 6 1 0 0 0 0 0 0 0 0 0 0

以上各个结构定义为:

【表2-1 课堂记录文件结构】
信息1 信息2 信息3 信息4 信息5 信息6 信息7 信息8 信息9 信息10
信息 图片 问题 正确 分数 标号 奖励 时间 查询 检索

因此,课堂分数是将信息4,信息5,信息7 相加在一起。

二、成绩转换

参照 2020春季学期信号与系统课堂参与信息处理 中处理相关程序,对今年课堂交互文档进行处理。

1、转换程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# INTERTEST.PY                 -- by Dr. ZhuoQing 2021-07-02
#
# Note:
#============================================================from head import *datafile = tspstring2text('datatxt')
interfile = tspstring2text('inter')printf(datafile, interfile)namedim = []
scoredim = []
with open(datafile, 'r', encoding='gbk') as f:for l in f.readlines():lsect = l.rstrip('\n').split()score = int(lsect[5]) + int(lsect[6]) + int(lsect[8])scoredim.append(score)namedim.append(lsect[0])printf(l)tspsave('classdata', name=namedim, score=scoredim)
printf(namedim, scoredim)
printf#------------------------------------------------------------
#        END OF FILE : INTERTEST.PY
#============================================================

2、转换结果

总人数:164

name=['王洹芊','党添添','陈天瑞','尹子康','江群','邢森','张世乙','陈星','李可伊','袁梦','陈冠宇','张云帆','袁彦龙','王啸轩','徐赫临','明陈林','李永健','余珮琪','黄语萱','吴征鸿','左思成','王浩驰','康宇琦','蔡頌濠','曹健博','杨雨翔','金理想','邢海潼','吕光冉','黄正超','曹哲暄','王韬钧','杨思行','杨凌晓','周建东','黄嘉诚','栾垚','吕梦欣','雍子隆','张凯','尹航','闫梦蓓','邱亦文','苍岳洋','褚驰','王少儒','郑阳','刘逸凯','孙熙凯','杜邦得','于端瑞','刘梓哲','杨一凡','任坤','赖正宇','李俊杰2019011369','梁亨源','陈文泽','王与时','温昊','刘楠','仝牧坤','柴睿','瞿近远','张一博','储勇','武可雯','张卓宇','李若然','昕琦','陈洋','陈禹为','张睿喆','吕畅祺','谭龙涛','王觉','曲世远','李述','姜永鹏','杨宇新','彭昱玚','胡鑫豪','闫泽','杨小诺','何杰铃','杨鼎','张帅','韩东辰','牟准','关博文','陈吉坤','晏国凯','雍征彼','袁铭','许伟超','盘卓实','周义函','杨珂凡','夏星鹏','宋晓斌','高瞻远','刘康城','魏冰川','刘祖炎','左思清','张启航','黄彦彬','姜芯雨','陈卓明','李子韩','沈念辰','张智凯','武昊','时清扬','何琳欣','卢逸名','刘雪洁','姚泊先','宋雨璠','于江伟','孟子斌','王博闻','杨紫妍','付迪帆','蔡漫锋','张博轩','周佳祺','魏浩','邓皓天','徐诣堡','郑姝榕','陈祥艺','姚祎宁','金熠琦','仇铮','李浦豪','周亦哲','骆科燚','孙超','陈华清','李晨韬','吴晔','邢旺','王可','陈浩','何东阳','潘文凯','钟毅','叶金涛','周耀','李亮龙','贾宇飞','谷彧潇','王逸钦','曹展翔','徐昕翃','谭跳','谢宇轩','尹鹏','赵健桐','冉靖尧','张仁刚','周思维','黄昭源']
score=[19.00,14.00,6.00,7.00,20.00,20.00,7.00,20.00,27.00,21.00,13.00,25.00,23.00,11.00,20.00,14.00,23.00,23.00,21.00,10.00,18.00,8.00,12.00,22.00,14.00,6.00,7.00,21.00,12.00,15.00,13.00,23.00,18.00,22.00,22.00,20.00,20.00,20.00,20.00,10.00,22.00,14.00,21.00,20.00,16.00,6.00,12.00,22.00,21.00,7.00,25.00,12.00,16.00,16.00,16.00,14.00,21.00,15.00,22.00,15.00,16.00,21.00,7.00,21.00,20.00,12.00,19.00,22.00,18.00,6.00,17.00,13.00,25.00,20.00,19.00,20.00,22.00,18.00,21.00,20.00,19.00,18.00,22.00,7.00,17.00,14.00,7.00,22.00,18.00,23.00,15.00,18.00,18.00,21.00,20.00,20.00,23.00,18.00,23.00,22.00,14.00,20.00,7.00,21.00,17.00,11.00,13.00,23.00,18.00,6.00,22.00,23.00,20.00,15.00,15.00,21.00,6.00,10.00,18.00,16.00,20.00,7.00,20.00,6.00,21.00,6.00,18.00,23.00,21.00,21.00,20.00,23.00,8.00,20.00,20.00,16.00,14.00,18.00,8.00,4.00,14.00,4.00,6.00,14.00,14.00,4.00,6.00,6.00,14.00,8.00,14.00,16.00,0.00,0.00,12.00,12.00,10.00,6.00,6.00,14.00,0.00,8.00,4.00,0.00]

3、结果统计

得分结果统计:
平均分:15.5
方差:39.43

▲ 得分统计分布

可以看到课堂参与的得分差别很大,所以这一项的在最终成绩评定中所占的比例缩小到5%。

三、写入标准表格

1、写入程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# INTERSTAT.PY                 -- by Dr. ZhuoQing 2021-07-02
#
# Note:
#============================================================from headm import *name, score = tspload('classdata', 'name', 'score')import pandas as pdresultfile = tspstring2text('inter')
printf(resultfile)#------------------------------------------------------------
def setexcelcellstring(filename, sid, col, num):excelfile = pd.read_excel(filename, sheet_name='sheet1')rowid = -1sid = sid.strip(' ')for id, content in excelfile.items():if id == '姓名':content = [str(s) for s in content]for idd,s in enumerate(content):if s.find(sid) >= 0:rowid = iddbreakif rowid >= 0: breakif rowid < 0:return rowidexcelfile[col] = excelfile[col].astype(str)excelfile.at[rowid, col] = numexcelfile.to_excel(filename, sheet_name='sheet1', index=False)return rowid#------------------------------------------------------------
error = 0
for id,name in enumerate(name):ss = score[id]ret = setexcelcellstring(resultfile, name, '分数', ss)if ret < 0:error += 1printf("ERROR:%s,%s"%(name, ss))printf('\a')#------------------------------------------------------------
#        END OF FILE : INTERSTAT.PY
#============================================================

2、写入结果

出现了三个姓名匹配错误:

ERROR:蔡頌濠,22
ERROR:杨雨翔,6
ERROR:李俊杰2019011369,14

写入之后总共有12个人得分为0.

strid = 22
strall = [s.split() for s in tspgetdopstring(strid).split('\r\n') if len(s) > 0]
zeros = [s[0]+':'+s[1] for s in strall if float(s[1]) == 0]
printf(zeros)
printf(len(zeros))
['冉靖尧:0.0', '黄昭源:0', '刘毓灵:0', '陈景浩:0', '黄哲:0', '王逸钦:0.0', '李俊杰:0', '刘禹辰:0', '谷彧潇:0.0', '蔡颂濠:0', '付欣旺:0', '王献文:0']

※ 分析结果 ※


1、INFORSUB附件程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# INFORSUB.PY                  -- by Dr. ZhuoQing 2020-06-18
#
# Note:
#============================================================from headm import *
import pandas as pd#------------------------------------------------------------
def showexcel(filename):excelfile = pd.read_excel(filename, sheet_name="sheet1")listdata = excelfile.values.tolist()strall = ''for id,l in enumerate(listdata):printff(id, l)return listdatadef showexcelinfor(filename, sid):excelfile = pd.read_excel(filename, sheet_name='sheet1')rowid = -1for id, content in excelfile.items():if id == '学号':content = [str(s) for s in content]if str(sid) in content:rowid = content.index(str(sid))breakif rowid < 0:return rowidprintf(excelfile.values.tolist()[rowid])return rowid#------------------------------------------------------------
def setexcelcellstring(filename, sid, col, num):excelfile = pd.read_excel(filename, sheet_name='sheet1')rowid = -1for id, content in excelfile.items():if id == '学号':content = [str(s) for s in content]for idd,s in enumerate(content):if s.find(sid) >= 0:rowid = iddbreakif rowid >= 0: breakif rowid < 0:return rowidexcelfile[col] = excelfile[col].astype(str)excelfile.at[rowid, col] = numexcelfile.to_excel(filename, sheet_name='sheet1', index=False)return rowid#------------------------------------------------------------
def appendexcelcellstring(filename, sid, col, num):excelfile = pd.read_excel(filename, sheet_name='sheet1')rowid = -1for id, content in excelfile.items():if id == '学号':content = [str(s) for s in content]if str(sid) in content:rowid = content.index(str(sid))breakif rowid < 0:return rowidprintff(rowid, col)excelfile[col] = excelfile[col].astype(str)if excelfile.at[rowid, col] != 'nan':excelfile.at[rowid, col] = num + ', ' + excelfile.at[rowid, col]else: excelfile.at[rowid, col] = numif len(num) == 0: excelfile.at[rowid, col] = ''excelfile.to_excel(filename, sheet_name='sheet1', index=False)return rowid#------------------------------------------------------------
def getexcelcellstring(filename, sid, col):excelfile = pd.read_excel(filename, sheet_name='sheet1')rowid = -1for id, content in excelfile.items():if id == '学号':content = [str(s) for s in content]if str(sid) in content:rowid = content.index(str(sid))breakif rowid < 0:return rowid#    printff(rowid, col)
#    excelfile[col] = excelfile[col].astype(str)return excelfile.at[rowid, col]#------------------------------------------------------------
if __name__ == "__main__":
#    setexcelcellstring(tshfile, '2020210975', 'HW1', 88)
#    s = getexcelcellstring(tshfile, '2020210975', 'HW1')
#    printf(s)
#    showexcel(shzhfile)x=showexcelinfor(shzhfile, '2020280355')printf(x)#------------------------------------------------------------
#        END OF FILE : INFORSUB.PY
#============================================================

2021年信号与系统处理期中考试与课堂交互分数相关推荐

  1. 2021年信号与系统期中考试的补测试题

    简 介: 记录了对于信号与系统2021年期中考试中因为使用考试宝过程中受到软件干扰而在期末进行的补考过程. 关键词: 信号与系统,期中考试,考试宝 §01 考试宝补测题 在2021年信号与系统分析课程 ...

  2. 《信号与系统》期中总结

    某高校的某专业于2020/11/8日进行<信号与系统>期中考试,而某同学这次考试直接爆炸,原因某同学也差不多知道:对待这门学科浅尝辄止,只达到了看着答案(看答案+看书)能够把作业做出来的程 ...

  3. 安徽省2021年高考各科成绩查询,2021年安徽高考总分是多少 考试科目及各科分数...

    2021年安徽高考总分是多少 考试科目及各科分数2021-04-16 08:51:21文/钟诗贺 2021年安徽高考在即,想必很多考生都非常关注安徽高考的总分.考试科目及各科分数.下面小编为大家详细盘 ...

  4. 2021年信号与系统作业统计处理

    简 介: 对于2021年信号与系统分析课程作业成绩进行整理 关键词: 信号与系统,作业成绩 §01 作业原始表格 一.原始数据表格   由助教提交的作业统计的原始表格如下图所示. 1.表单结构 (1) ...

  5. 光庭2021c语言笔试题,上海市闵行区莘松中学2020—2021学年八年级下学期期中考试语文试题.docx...

    莘松中学2020学年第二学期八年级语文学科期中考试 (满分100分,时间100分钟) 注意:请将所有答案写在答题纸上 文言文(25分) 默写(6分) ,胡为乎泥中.<式微> 海内存知己, ...

  6. SS2022 信号与系统期中练习题

    简 介: 今天(2022-04-14)上午第二大节进行了随堂的信号与系统期中考试,总共有六组试题,每组十道选择题.答题时间为45分钟. 关键词: 信号与系统,期中考试,单项选择题 #mermaid-s ...

  7. 信号与系统2021年期末考试命题

    简 介: 本文是针对2021年春季学期信号与系统课程期末考试命题所做的准备工作. 关键词: 信号与系统,命题,期末考试 §00 命题说明 1.命题题型   本次命题是面向2021年本科"信号 ...

  8. [渝粤教育] 西南交通大学 信号与系统A 参考 资料

    教育 -信号与系统A-章节资料考试资料-西南交通大学[] 第一章 单元作业 第一章 自测题 1.[单选题]下图所示的4个确定性信号,哪个信号是连续时间能量信号( ). A. B. C. D. 参考资料 ...

  9. 22考研清华深研院电子与通信,985信号与系统400+高分经验分享

    在半年多备战考研的过程中,由于网上考研信息的繁多和杂乱,我走了很多弯路,让我深深体会到考研人的痛苦.因此,我希望分享给学弟学妹资料最精简的备考经验,以供学弟学妹参考.同时,我整理这篇经验帖也想告诉各位 ...

最新文章

  1. C++使用GDI+实现图片格式转换
  2. Fiori My Task App Performance Analysis
  3. 动画原理——绘制正弦函数环绕运动椭圆运动
  4. android自动触发返回,ionic4处理android返回按钮事件
  5. Jenkins系列之二——centos 6.9 + JenKins 安装
  6. 人生苦短,喝点python性能鸡汤
  7. 深度学习福利入门到精通第一讲——LeNet模型
  8. 中心静脉导管行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  9. 自动驾驶落地物流场景,嬴彻科技驶入快车道
  10. Word(六)-强大的“邮件合并”(2)
  11. 没听过33大原则,赶紧偷偷学习一下:JS开发者不得不知的33大原则!
  12. mysql 外文翻译5000字_MySQL数据库管理外文翻译.doc
  13. xmarks恢复使用
  14. 科技界、IT届的外号
  15. [云炬商业计划书阅读分享] 全国挑战杯创业计划大赛预赛评审办法
  16. centOS 7无法连接网络详细解决办法
  17. 利用ckplayer播放视频
  18. celery异步——生产者消费者
  19. SpringCloud Config连接私有仓库时的配置(记录一下)
  20. 【mysql-日志】清理二进制日志文件

热门文章

  1. HTML、CSS知识学习与整理
  2. C#多线程编程(1)--线程,线程池和Task
  3. pro git读书笔记
  4. oracle基本命令集锦
  5. hdu 1251 统计拼图
  6. eclipse 启动tomcat, java.lang.ClassNotFoundExcepti
  7. C++的那些事:你真的了解引用吗
  8. linux文件cache的框框架架以及相关的数据结构
  9. 可爱的MicrosoftAjax.js精简版(47K)
  10. Aps.Net WebApi依赖注入