设计初衷:

程序设计来是面向实际使用过程的,不是为了程序而设计程序。

期末考试临近,最初记录平时作业成绩的时候,没有把每次分数统计的Excel表格整合在一起,最后老师需要课代表把所有的平时作业成绩汇总到一个Excel中。如果是人工统计数据并填入,将非常麻烦且耗时,人做这种事情,做的时间长了,还容易粗心,可能会导致错误。而程序在设计合理的情况下,很难发生错误,准确率远超人类。

因此这个代码的目的在于大量节约时间,只要按照规定的格式写入成绩,不论是多少个Excel表格组,只要运行程序,就能自动写入数据到已设计好的表格中。

过程如下:

1:首先是Excel的版本问题

关键在于读取Excel的数据和写入Excel的数据。

原本用于记分的模板为老版本的Excel,无法使用openpyxl进行操作。

用来读取同学名字和写入数据的Excel为同一个,都是老版本的,openpyxl不适用。

解决办法:使用import xlrd读取数据。

2:进行初步实验,完成第一步。

先编写代码,让其能读取Excel中31班所有同学的名字并输出,这样才能找到其每次作业的分数。

通过xlrd的xxx.cell(row,column).value 获得指定位置的数据,由于放置班级成员名字时,都有一定的存放规律(例如下图所示的意思就是名字都放在了同一列),按照这个规律一个个读取即可。

由于这里涉及他人隐私,故将读取后的结果放在了蓝墨云班课提交的word文档上。

设计完成后,成功读取到所有人的名字。

3:读取成功

现在每当读取到一个人的名字之后,要让程序打开若干个记录着高数成绩的文件,提取每个同学对应的分数。

为了方便提取文件,将第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

来源: https://www.cnblogs.com/I-am-yu/p/13124786.html

python实训目的意义_20193120 实验四 Python综合实践相关推荐

  1. python实训总结报告书_20172304 实验四python综合实践报告

    20172304 实验四python综合实践报告 姓名:段志轩 学号:20172304 指导教师:王志强 课程:Python程序设计 实验时间:2020年5月13日至2020年6月14日 实验分析 本 ...

  2. python实训目的意义_Python实训第二天--基础知识2

    '''''' ''' 列表: 定义: 在[]内,可以存放多个任意类型的值, 并以逗号隔开. 一般用于存放学生的爱好,课堂的周期等等... ''' # 定义一个学生列表,可存放多个学生 # list([ ...

  3. python实训报告50000_Python程序设计 实验报告五

    安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名汤振宇学号3190505108 成绩 日期 2020.4.23 指导老师修宇 [实验名称]综合运用三种基本结构进行程序设计(综合性实 ...

  4. python实训的意义_[Python] 一个让我更加清楚地理解了字典的实验……

    背景 由于一些安全上的要求,笔者所在公司在阿里云上的主机都要写白名单ACL.其中一个安全组中有监控的脚本需要发消息给企业微信,然后就犯了难--企业微信并没有接口告诉我们它的URL最后会解析为哪些ip, ...

  5. 【量化投资实训】基于MATLAB实验四.某行业PE最小的10只股票

    函数原型 function MinPEStock = FindMinPEStock10(WholeStockFinc, IndustryName) matlab实现 function MinPESto ...

  6. 大学python实训总结-千锋Python实训总结 学好基础才能走的更远

    时间飞逝,不知不觉在千锋学习Python已经一个月了,在这不长不短的一个月时间感觉我以往的生活方式和学习方式完全被改变了,希望我能继续保持这样的求学心态和学习态度.下面这个Python实训总结就是我对 ...

  7. php实训目的及意义,ps实训目的

    ps实训目的(推荐学习:PS视频教程) 通过实训,使我们进一步掌握图形图像处理的基本方法和基本技能;熟练使用photoshop软件,并能用它来完成图形图像的设计.制作和处理.培养我们能按要求设计和制作 ...

  8. Python实训 姓名大作战

    Python实训 姓名大作战 文档介绍: 原创人:蒲成伟 发表目的:保存代码,作为以后的借鉴模型,以防数据丢失. 提示:网友可以借鉴,可以提意见,有更好的修改方案本人一定改正 实训要求 三.实验内容 ...

  9. Python实训day10pm【os模块-处理Excel统计学生观看直播时长】

    Python实训-15天-博客汇总表 学以致用,课堂练习:考勤目录中存放的是所有的考勤excel表格,从第1天~第9天,表中关键的信息就是,学生当天看了多久的直播. 要求,利用所学知识,读取每个exc ...

最新文章

  1. 揭露Windows中各种不老实的服务
  2. RDKit | 基于片段的分子生成(骨架A+骨架B)
  3. 危害网站关键词优化的因素如何避免?
  4. 10W学习笔记——查询之联接
  5. oracle登录错误:ORA-28000: the account is locked 解决方法
  6. 关于火狐中使用jquery的animate做动画效果的问题解决
  7. 【期望】选书问题(金牌导航 期望-7)
  8. 大数据技术之kafka (第 3 章 Kafka 架构深入) Zookeeper 在 Kafka 中的作用
  9. xpe低配置系统解决“写缓存失败”问题
  10. Thinkphp3.2 中使用find_in_set
  11. Deep Learning基础--Softmax求导过程
  12. Linux学习之磁盘操作
  13. .NET 5中的EF Core 5数据迁移:在单独的库中并自动部署
  14. idea 拉取gitee代码_手把手撸一个 IDEA 插件
  15. ListView.setOnItemClickListener 点击无效
  16. mysql删除注册表mysqld要删除吗_原神官方删除魈的观测枢数据,又要拆分机制吗?策划应该不傻吧?...
  17. httpd-2.4实现虚拟主机、访问控制及https功能
  18. 【职场日语】日文简历模板
  19. 燕山大学高数AⅠ复习资料
  20. Excel公式:index + match多条件匹配,以当前行多个单元值去另一文档匹配,返回指定单元值

热门文章

  1. 三生三世之 数据挖掘
  2. sql server 实现like in 查询
  3. Unity简单操作:HDR(一) 给Camera开启HDR
  4. 20165221学习基础和C语言基础调查
  5. 浙江计算机考试有哪些科目,2021研究生全国统考的考试科目有哪些
  6. html和css的小结
  7. 软件测试:HttpUnit简单介绍和案例应用
  8. D-1.7.18 解决安装Anaconda时遇到的困难的收获与思考
  9. 赛门铁克Symantec还原ghost系统文件操作(超详细)
  10. 攻防世界_level2