Python-类与文件读取结合

目录

作业1:

知识点1:eval使用

知识点1:类对象数组定义

知识点2:文件读取

知识点3:内容解包

知识点4:列表排序

作业2:

知识点1:类继承后 初始化管理

知识点2:文件的筛选


作业1:

数据如下:

stu1.txt 孙同学,2020-5-21,20,'男',77,56,77,76,92,58,-91,84,69,-91
stu2.txt 赵同学,2020-11-3,24,'女',65,68,72,95,-81,71,86,91,57,91
stu3.txt 王同学,2021-8-7,25,'男',87,78,90,-76,88,47,100,65,69,100 
stu4.txt 李同学,2021-8-10,29,'男',92,54,85,71,-91,68,77,68,95,95

以上四个txt文档在work路径下可以找到。

定义Student类,包括name、dob、age、gender和score属性,包括top3方法用来返回学生的最大的3个成绩(可重复)、sanitize方法用来将负的分数变为正的分数,负的分数可能是输入错误。声明stu_list对象组数用于存储所有的学生对象。最后输出所有的学生信息包括姓名、生日、年龄、性别、最高的3个分数。

第一题的输出结果如下,供参考:

 

初始思路:

class Student:def __init__(self, name, dob, age, gender, score):self.name = nameself.dob = dobself.age = ageself.gender = genderself.score = scoredef top3(self):self.sanitize()self.score = sorted(self.score)self.score=self.score[-3:]def sanitize(self):for i in range(len(self.score)):if self.score[i]<0:self.score[i]=abs(self.score[i])def print_stu(self):self.top3()print('姓名:', self.name, '生日:', self.dob,'年龄:', self.age, '性别:', self.gender, '分数:', self.score)s1 = Student('孙同学','2020-5-21','20','男',[77,56,77,76,92,58,-91,84,69,-91])
s2 = Student('赵同学','2020-11-3','24','女',[65,68,72,95,-81,71,86,91,57,91])
s3 = Student('王同学','2021-8-7','25','男',[87,78,90,-76,88,47,100,65,69,100])
s4 = Student('李同学','2021-8-10','29','男',[92,54,85,71,-91,68,77,68,95,95])
s5 = Student('特长同学','2020-10-5','20','男',[180,77,56,77,76,92,58,-91,84,69,-91])
s6 = Student('特长同学','2020-10-6','20','女',[230,77,56,77,76,92,58,-91,84,69,-91])text1 = '孙同学', '2020-5-21','20','男',[77,56,77,76,92,58,-91,84,69,-91]
text2 = '赵同学', '2020-11-3','24','女',[65,68,72,95,-81,71,86,91,57,91]
text3 = '王同学','2021-8-7','25','男',[87,78,90,-76,88,47,100,65,69,100]
text4 = '李同学','2021-8-10','29','男',[92,54,85,71,-91,68,77,68,95,95]
text5 = '特长同学','2020-10-5','20','男',[180,77,56,77,76,92,58,-91,84,69,-91]
text6 = '特长同学','2020-10-6','20','女',[230,77,56,77,76,92,58,-91,84,69,-91]
print(type(text1))
# 赋值办法1
stu_lst = [Student for i in range(6)]
for i in range(len(stu_lst)):stu_lst[i] = Student(*eval('text'+str(i+1)))stu_lst[i].print_stu()# 赋值办法2
print('----------------------------')
for i in range(6):i = eval('s'+str(i+1))i.print_stu()

知识点1:eval使用

后续改进:

'''
定义Student类,包括name、dob、age、gender和score属性,
包括top3方法用来返回学生的最大的3个成绩(可重复)、
sanitize方法用来将负的分数变为正的分数,负的分数可能是输入错误。
声明stu_list对象组数用于存储所有的学生对象。
最后输出所有的学生信息包括姓名、生日、年龄、性别、最高的3个分数。
'''
import osclass Student:def __init__(self, name, dob, age, gender, score):self.name = nameself.dob = dobself.age = ageself.gender = genderself.score = scoredef top3(self):self.sanitize()self.score = sorted(self.score)self.score=self.score[-3:]def sanitize(self):self.score = self.score.split(',')self.score =[int(i) for i in self.score]for i in range(len(self.score)):if self.score[i]<0:self.score[i]=abs(self.score[i])def print_stu(self):self.top3()print("姓名:"+self.name,end=' ')print("生日:"+self.dob,end=' ')print('年龄:'+self.age,end=' ')print('性别:'+self.gender,end=' ')print('分数:'+str(self.score))path = './aistudio/work'
listidr = os.listdir(path)
info_lst = []
num=0
for name in listidr:num = num+1if os.path.isfile(path+'/'+name):temp = name.split('.')(filename, filetype) = (temp.pop(0), temp.pop(0))if filetype == 'txt':with open(path+'/'+name,'r', encoding='UTF-8') as f:text =f.read()temp = tuple(text.split(',',4))info_lst.append(temp)stu_lst = [Student for i in range(num)]
for i in range(len(stu_lst)):stu_lst[i] = Student(*info_lst[i])stu_lst[i].print_stu()

知识点1:类对象数组定义

知识点2:文件读取

知识点3:内容解包

知识点4:列表排序

作业2:

数据格式如下:

stu5.txt 特长同学,2020-10-5,20,'男',180,87,98,77,76,92,58,-76,84,69,-47
stu6.txt 特长同学,2020-10-6,20,'女',230,76,48,82,88,92,58,-91,84,69,-68

以上两个txt文档在work路径下可以找到。

定义Spostudent、Artstudent为Student的子类,在子类的属性里面新增了spe为特长分数。Spostudent包括的top3方法返回的是最低的3个得分(可重复),Artstudent包括top3方法返回的是最高的3个得分(可重复),最后使用多态的方式输出2个特长同学的姓名、生日、年龄、性别、分数、特长分。

第二题的输出结果如下,供参考:

import osclass Student:def __init__(self, name, dob, age, gender, score):self.name = nameself.dob = dobself.age = ageself.gender = genderself.score = scoredef sanitize(self):self.score = self.score.split(',')self.score = [int(i) for i in self.score]for i in range(len(self.score)):if self.score[i]<0:self.score[i]=abs(self.score[i])class Spostudent(Student):def __init__(self, name, dob, age, gender, score,spe):# super(Spostudent,self).__init__(spe)Student.__init__(self,name, dob, age, gender, score)self.spe = spedef top3(self):self.sanitize()self.score = sorted(self.score)self.score = self.score[0:3]def print_stu(self):self.top3()print("姓名:" + self.name, end=' ')print("生日:" + self.dob, end=' ')print('年龄:' + self.age, end=' ')print('性别:' + self.gender, end=' ')print('分数:' + str(self.score),end='')print('特长分:'+self.spe)class Artstudent(Student):def __init__(self, name, dob, age, gender, score,spe):Student.__init__(self, name, dob, age, gender, score)self.spe = spedef top3(self):self.sanitize()self.score = sorted(self.score)self.score = self.score[-3:]def print_stu(self):self.top3()print("姓名:" + self.name, end=' ')print("生日:" + self.dob, end=' ')print('年龄:' + self.age, end=' ')print('性别:' + self.gender, end=' ')print('分数:' + str(self.score), end=' ')print('特长分:' + self.spe)path = './aistudio/work'
listidr = os.listdir(path)
info_lst = []
num=0
for name in listidr:num = num+1if os.path.isfile(path+'/'+name):temp = name.split('.')(filename, filetype) = (temp.pop(0), temp.pop(0))if filetype == 'txt':with open(path+'/'+name,'r', encoding='UTF-8') as f:text =f.read()temp = list(text.split(',',5))temp[4], temp[5] = temp[5], temp[4]if "特长" in temp[0]:info_lst.append(temp)stu_1 = Spostudent(*info_lst[0])
stu_1.print_stu()stu_2 = Artstudent(*info_lst[1])
stu_2.print_stu()

知识点1:类继承后 初始化管理

知识点2:文件的筛选

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乌龟量化估值怎么看_推荐几个查询指数估值的网址

首先说一下&#xff0c;因为每一家网站的数据来源不同&#xff0c;因此在不同的网站上&#xff0c;相同指数的估值数据未必相同。但这不重要&#xff0c;只要大方向没错&#xff0c;对指数所处的估值区域有一个大致的概念&#xff0c;保持“模糊的正确”即可。以下推荐几个可以…

机器学习-01regression

主要内容&#xff1a; 1.回归模型的出现 2.回归模型的选择--使得损失最小 3.损失最小时&#xff0c;参数求值 梯度下降法 4.损失不理想&#xff0c;重新调整模型 5.添加正则表达式&#xff0c;即学习率 import numpy as np import matplotlib.pyplot as plt x_data [338.…

unity 草 可以一棵棵种吗?_这种野草人称“瓜子金”,1斤能卖50多,拔1棵少棵很珍贵...

欢迎来到“农民爱花草”&#xff0c;这里每天都会分享一些有关花草绿植的小知识&#xff0c;喜欢的朋友请“关注”今日导读&#xff1a;这种野草人称“瓜子金”&#xff0c;1斤能卖50多&#xff0c;拔1棵少棵很珍贵在我们广大的农村地区生活着很多的植物&#xff0c;有很多的植…

安装IntelliJ IDEA 2019.2激活

所有教程就是下载完成后&#xff0c;配置 我下载完jetbrains-agent-latest.rar将后缀名改为jar。添加----失败 百度了很多 都没有 最后把jetbrains-agent-latest.rar进行解压&#xff0c;将解压内容复制到IntelliJ中。再进行添加即可。 ps:刚开始安装完成后安装路径下没有im…

pytorch tensor查找0_Pytorch简单教程

2019 年&#xff0c;ML 框架之争只剩两个实力玩家&#xff1a;PyTorch 和 TensorFlow。研究者大批涌向 PyTorch&#xff0c;而业界的首选仍然是 TensorFlow。Pytorch和TensorFlow的区别&#xff1a;TensorFlow是基于静态计算图的&#xff0c;静态计算图是先定义后运行&#xff…

白盒测试-条件覆盖-短路陷阱

条件覆盖 ​要求设计足够多的测试用例&#xff0c;使得每一个判定的​每一个条件的每一个取值&#xff08;真或假&#xff09;至少各执行一次。 对于示例来说​&#xff0c;可以设计&#xff1a; {x4,y4,z11} 条件取值&#xff1a;TFTF {x2,y6,z9} 条件取值&#xff1a;F…

抖音2020研究报告_抖音音乐发布2020抖音音乐生态数据报告

近几年&#xff0c;随着原创音乐产业规模逐年递增及数字音乐4.0时代觉醒&#xff0c;拓宽了原创音乐创作与宣发渠道&#xff0c;真正实现了大众娱乐生活从“听音乐”到“看音乐”到“玩音乐”的多重共振。11月5日&#xff0c;抖音音乐正式发布《2020抖音音乐生态数据报告》。报…

mysql主备切换 自动_核电生产管理信息系统EAM完成首次备用环境切换演练

安全是核电事业稳步发展的基石&#xff0c;中国核电始终将安全放在第一位&#xff0c;在系统设计及日常管理中&#xff0c;注重安全备用及安全冗余的考虑。核电生产管理信息系统作为核电现场业务的主要承载工具&#xff0c;在核电日常生产运行中发挥着越来越重要的作用。近日&a…

外星人台式电脑_戴尔 XPS 和外星人大更新,一边是生产力,一边是游戏

十代酷睿的到来&#xff0c;也催促着终端厂商更迭着旗下的产品线&#xff0c;而今年特殊的情况更让不少居家办公的人意识到生产工具和生产力的可贵。在学生们即将返校&#xff0c;白领们陆续回到办公室的当口&#xff0c;戴尔对旗下产品进行了大更新&#xff0c;全新的 XPS15 和…

string 中的offset_【Java基础】String常量的长度有限制吗?

备注&#xff1a;JDK版本&#xff1a;1.8.0最近同事问了我一个问题&#xff0c;String常量有长度限制吗&#xff1f;为什么会问起这个问题呢&#xff0c;因为同事在开发中确实遇到了IDEA编译器编译过程中提示字符串常量过长的异常。异常的出现也就证明了String常量是有长度限制…

param[:]=param-lr*param.grad/batch_size的理解

lr*param.grad/batch_size 结果最终为一个标量&#xff08;具体数值&#xff09; param是一个列表 param[:]param-lr*param.grad/batch_size会把列表中的所有元素分别运算&#xff1a; param-lr*param.grad/batch_size import numpy as np wnp.random.normal(scale0.01,siz…

anaconda3安装_Anaconda3软件安装教程

01获取方式Anaconda3 下载地址链接&#xff1a;https://pan.baidu.com/s/1lJJavzMGxjFvxYNyJ_nPAQ提取码&#xff1a;dc5c安装过程中有问题可咨询微信&#xff1a;d73707919702插件详细安装步骤1.找到下载好压缩文件包单击鼠解压到Anaconda32.待到解压完成后双击打开解压后的文…

pip命令提示unknow or unsupported command install解决方法

python的pip一直可以用 再次使用时突然发现有错误&#xff1a; 经百度一查&#xff0c;是因为安装了loadrunner&#xff0c;导致了系统无法识别到底应该用哪个pip。 解决方案&#xff1a; 第一种&#xff1a;删除strawberry&#xff0c;但是这样明显是会影响到其他软件的使用…

360浏览器登录_浏览器发展历史介绍及当今主流浏览器的详细对比

作为访问internet的工具&#xff0c;浏览器已经成为我们日常生活中必不可少的上网工具了&#xff0c;它能让你加入全球的网络&#xff0c;通过一个窗口就能够连接世界。当你用浏览器时有没有想过浏览器的发展历史&#xff1f;面对市场上繁多的浏览器你又为什么偏爱你现在用的&a…

backward理解

backward&#xff1a;自动求梯度。计算小批量随机梯度。 当模型和损失函数形式较为简单时&#xff0c;上面的误差最小化问题的解可以直接用公式表达出来。这类解 叫作解析解&#xff08;analytical solution&#xff09;。本节使用的线性回归和平方误差刚好属于这个范畴。然而…

excel在线_功能强大的纯前端 Excel 在线表格: Luckysheet

【导语】&#xff1a;Luckysheet是一款类似excel的在线表格&#xff0c;纯前端&#xff0c;功能强大、配置简单、完全开源&#xff0c;几行代码就能展现出一个功能完备的在线表格。简介Luckysheet是一款类似excel的纯前端在线表格&#xff0c;只需要引入js和css文件即可使用。L…

STL-queue.back()队尾误区

queue.back()指向最新插入queue中的值&#xff0c;而非队尾元素&#xff0c; 如&#xff1a;queue.pop()多次&#xff0c;并不会影响queue.back()的值。 STL 英文back()解释&#xff1a; reference& back(); const_reference& back() const; Access last element …

u8 和 char如何转化_EXCEL小知识——如何快速实现文本与数值的互相转化

我是前言嗨&#xff0c;大家好&#xff0c;消失了一个多月&#xff0c;我胡汉三&#xff0c;又回来啦~今天给大家带来的&#xff0c;是如何实现文本与数值之间的 “ 快速 ” 转换&#xff01;众所周知&#xff0c;在一些制造类公司&#xff0c;公司的运营离不开一些系统软件的辅…

navicat er图没有连线_迁徙图?流向图?城市关系强度图?

文章首发于公众号「码上GIS」&#xff0c;欢迎关注。文中流向图和城市关系强度图的 ArcMap 10.5 Mxd 工程和数据可在公众号后台回复「190708」和「190709」获取不记得是从哪年开始&#xff0c;每年春运期间&#xff0c;百度都会发布个春运大数据&#xff0c;其中最让人印象深刻…

linux删除文件_Linux中删除特殊名称文件的多种方式

今日分享&#xff1a;我们在肉体的疾病方面花了不少钱&#xff0c;精神的病害方面却没有花什么&#xff0c;现在已经到了时候&#xff0c;我们应该有不平凡的学校。--《瓦尔登湖》前言我们都知道&#xff0c;在linux删除一个文件可以使用rm命令&#xff0c;但是有一些特殊名称的…