python实训⽬的意义_20193120实验四Python综合实践
设计初衷:
程序设计来是⾯向实际使⽤过程的,不是为了程序⽽设计程序。
期末考试临近,最初记录平时作业成绩的时候,没有把每次分数统计的Excel表格整合在⼀起,最后⽼师需要课代表把所有的平时作业成绩汇总到⼀个Excel中。如果是⼈⼯统计数据并填⼊,将⾮常⿇烦且耗时,⼈做这种事情,做的时间长了,还容易粗⼼,可能会导致错误。⽽程序在设计合理的情况下,很难发⽣错误,准确率远超⼈类。
因此这个代码的⽬的在于⼤量节约时间,只要按照规定的格式写⼊成绩,不论是多少个Excel表格组,只要运⾏程序,就能⾃动写⼊数据到已设计好的表格中。
过程如下:
1:⾸先是Excel的版本问题
关键在于读取Excel的数据和写⼊Excel的数据。
原本⽤于记分的模板为⽼版本的Excel,⽆法使⽤openpyxl进⾏操作。
⽤来读取同学名字和写⼊数据的Excel为同⼀个,都是⽼版本的,openpyxl不适⽤。
解决办法:使⽤import xlrd读取数据。
2:进⾏初步实验,完成第⼀步。
先编写代码,让其能读取Excel中31班所有同学的名字并输出,这样才能到其每次作业的分数。
通过xlrd的ll(row,column).value 获得指定位置的数据,由于放置班级成员名字时,都有⼀定的存放规律(例如下图所⽰的意思就是名字都放在了同⼀列),按照这个规律⼀个个读取即可。
由于这⾥涉及他⼈隐私,故将读取后的结果放在了蓝墨云班课提交的word⽂档上。
设计完成后,成功读取到所有⼈的名字。
3:读取成功
现在每当读取到⼀个⼈的名字之后,要让程序打开若⼲个记录着⾼数成绩的⽂件,提取每个同学对应的分数。
python怎么读取xls文件为了⽅便提取⽂件,将第n次平时成绩汇总的表格命名为n.xlsx(0.xlsx是为了备份,备份原因在下⾯会提到),这样就能公式化读取。
tar.xls是读取部分数据的地⽅,也是出结果的地⽅。
这⾥发⽣了⼀个⼩插曲,在读取成绩的代码中,出现了错误。
⼀半⼈的数据还未读取完,程序就异常终⽌。
原来这段话其实写的是str(i+1),⽽i的范围是3~34,所以会报错,因为系统根本不到15.xlsx
改成j之后,程序恢复正常,成功读取到每个同学对应的分数。
(通过这个程序,也到了部分没有填⼊成绩的同学,最后查消息记录,都补上去了)
4:紧接着需要把读取到的数据写⼊到⽂件中。
由于⽂件是⽼版本的Excel,所以只能⽤xlwt和xlrd来解决。
另外,在给Excel⽂件追加内容的时候,需要import xlutils,否则只能重新写⼀个新的⽂件。该模块需要⼿动安装。之前由于读取的⽂件后缀为xlsx,所以产⽣了记录分数错误的严重bug,情况如下:
最后⼀排数据正确输⼊,其他数据均为错误数据。
原因在于⽤来提供数据的⽂件tar.xlsx损坏。
更改办法:由于使⽤xlwt和xlrd读取后缀为xlsx⽂件时,导致⽂件损坏,所以应该改成读取xls后缀的⽂件,就能恢复正常。上⾯是错误的写法,会导致⽂件损坏⽆法打开,之前没有对此⽂件进⾏备份,
导致差点让整个⽂件的数据都丢失了。
下⾯的写法即可避免错误,同时也可以打开⽂件查看结果。
运⾏的时候不要打开⽬标⽂件(tar.xls)否则会引发permission denied,程序将⽆法访问表格。
⽂件要记得保存。
同样不能保存为.xlsx,否则⽆法打开查看最后结果。
运⾏结果:
经过调试,最后程序正常运⾏,运⾏结果如下:
先把需要的⽂件放到指定⽂件夹中:
然后运⾏程序,结果如下:
经过校验,程序中输出的分数确实为原来14个Excel上记录的分数,⾄此程序实现了⽬标功能。
稍微对代码进⾏修改,即可统计若⼲次成绩并写⼊到该表格中。
修改之后,只要输⼊需要统计的次数,并把⽂件放到指定的位置,就能⾃动填⼊。
总结:
Python是⼀种相对好⼊门的语⾔,但要是真正把握它却不容易。
例如,对于排序,Python只需要⽤⼀个sorted就能解决,C语⾔就需要⽤各种类型的排序算法,专门编写⼀串代码解决。
所以Python应该拿来做更⾼级的事情。
刚开始学习的内容和C语⾔差不多,很多都能在C语⾔上办到。
到后来,列表,元组,字典,这些C语⾔上都见不到。
Python提供的部分函数能很⽅便的操作,例如如果想要在背后插⼊⼀个数据,只需要⽤append()办法,⽽C语⾔就复杂了。
接着是正则表达式和字符串的处理,这些放到C语⾔上都⽐较⿇烦。
函数,C语⾔和Python都有的功能,但C语⾔⼀次只能携带⼀个返回值,必须⽤指针才能携带回多个返回值,⽽Python可以同时带回多个返回值,同时其函数的功能相⽐于C语⾔更强⼤,更⽅便。
于是来到了⾯向对象的设计,class,try,import和⽂件的操作。这⾥感受最深的就是⽂件操作,⽤Python提供的xlwt,xlrd和openpyxl,就能解决处理Excel⽂件的问题。
数据库,⽹络爬⾍,前者⼴泛⽤于⽣活当中,后者如果使⽤得当,可以帮助你在海量数据中提取关键数据。socket编程,使得程序运⾏的对象从⼀个计算机,可以延伸到多个计算机当中。
课外部分,还学习了pygame和GUI的制作,通过学习课外部分,程序能⼒获得进⼀步提升。尤其是图形⽤户界⾯,如果没有它,就好像⽤cmd对⽂件进⾏操作,查看和对⽂件操作都⾮常⿇烦。
课程结束了,但程序设计的过程并未结束。如果有时间,还会加强对Python编程能⼒的训练。
建议:
在课堂上让同学编写⼀些代码,加强训练。不必编写很复杂的代码,⽬的只是让同学们掌握如何使⽤。
由于Python主要是函数名⽐较难记,以import re为例,⾥⾯就有很多需要背的函数,例如re.match,re.sub,所以说在练习的时候推荐有提⽰。
标签:⽂件,读取,xlsx,Python,Excel,实践,C语⾔,20193120
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论