python学习实例(6)

#=============================
#6.6 文件系统(File System)
#=============================#+++++++++++++++++++++++++++++
#6.6.3 Python中的文件操作
#+++++++++++++++++++++++++++++#<程序:读取文件os.py>
f = open("./Task1.txt",'r'); fls = f.readlines()
for line in fls:line = line.strip(); print (line)
f.close()#<程序:读取文件os.py,计算并写回>
f = open("./Task1.txt",'r+'); fls = f.readlines()
for line in fls:line = line.strip(); lstr = line.split()if lstr[0] == '3':res = 0for e in lstr[1:]:res+=int(e)
f.write('\n4 '+str(res)); f.close()#+++++++++++++++++++++++++++++
#6.6.4 学生实例4.6.3扩展
#+++++++++++++++++++++++++++++#<程序:存储考试结果到class1.txt文件>
class student:def __init__ (self,mname,studentID):self.name = mname; self.StuID = studentID;	self.Course_Grade = {};self.Course_ID = []; self.GPA = 0;	self.Credit = 0def selectCourse(self,CourseName,CourseID):self.Course_Grade[CourseID]=0;			#CourseID:0 加入字典self.Course_ID.append(CourseID)			# CourseID 加入列表self.Credit = self.Credit+ CourseDict[CourseID].Credit #总学分数更新def getInfo(self):print("Name:",self.name);print("StudentID",self.StuID);print("Course:")for courseID,grade in self.Course_Grade.items():print(CourseDict[courseID].courseName,grade)print("GPA",self.GPA); 	print("Credit",self.Credit); print("")def TakeExam(self, CourseID):self.Course_Grade[CourseID]=random.randint(50,100)self.calculateGPA()def Grade2GPA(self,grade):if(grade>=90):return 4elif(grade>=80):return 3elif(grade>=70):return 2elif(grade>=60):return 1else:return 0def calculateGPA(self):g = 0;#遍历每一门所修的课程for courseID,grade in self.Course_Grade.items():g = g + self.Grade2GPA(grade)* CourseDict[courseID].Creditself.GPA = round(g/self.Credit,2)class Course:def __init__ (self,cid,mname,CourseCredit,FinalDate):self.courseID = cidself.courseName = mnameself.studentID = []self.Credit = CourseCreditself.ExamDate = FinalDatedef SelectThisCourse(self,stuID):	#记录谁修了这门课,在studentID列表里self.studentID.append(stuID)def setupCourse (CourseDict):	#建立CourseList: list of Course objectsCourseDict[1]=Course(1,"Introducation to Computer Science",4,1)CourseDict[2]=Course(2,"Advanced Mathematics",5,2)CourseDict[3]=Course(3,"Python",3,3)CourseDict[4]=Course(4,"College English",4,4)CourseDict[5]=Course(5,"Linear Algebra",3,5)def setupClass (StudentDict):    #输入一个空列表NameList = ["Aaron","Abraham","Andy","Benson","Bill","Brent","Chris","Daniel","Edward","Evan","Francis","Howard","James","Kenneth","Norma","Ophelia","Pearl","Phoenix","Prima","XiaoMing"] stuid = 1for name in NameList:StudentDict [stuid]=student(name,stuid)     #student对象的字典stuid = stuid + 1def SelectCourse (StudentList, CourseList):for stu in StudentList:		#每一个学生修几门课CourseNum = random.randint(3,len(CourseList))		#修CourseNum数量的课#随机选,返回列表CourseIndex = random.sample(range(len(CourseList)), CourseNum)for index in CourseIndex:stu.selectCourse(CourseList[index].courseName,CourseList[index].Credit)CourseList[index].SelectThisCourse(stu.StuID)def ExamSimulation (StudentList, CourseList):for day in range(1,6):	#Simulate the datefor cour in CourseList:if(cour.ExamDate==day):	# Hold the exam of course on that dayfor stuID in cour.studentID:for stu in StudentList:if(stu.StuID == stuID):	#student stuID selected this coursestu.TakeExam(cour.courseID)import random
CourseDict={}
StudentDict={}
setupCourse(CourseDict)
setupClass(StudentDict)
SelectCourse(list(StudentDict.values()),list(CourseDict.values()))
ExamSimulation(list(StudentDict.values()),list(CourseDict.values()))SaveToFile = ["ID"," ","Name"," ","Credit"," ","GPA","\n"]
for stu in StudentDict.values():SaveToFile.append(str(stu.StuID))SaveToFile.append(" ")SaveToFile.append(str(stu.name))SaveToFile.append(" ")SaveToFile.append(str(stu.Credit))SaveToFile.append(" ")SaveToFile.append(str(stu.GPA))SaveToFile.append("\n")
f = open("class1.txt","w")
f.writelines(SaveToFile)
f.close()#<程序:查询文件class1.txt中满足某条件的学生信息>
def select(path,col,op,val):f = open(path,"r")colNum = 0if col == "ID": colNum = 0elif col == "Name": colNum = 1elif col == "Credit": colNum = 2elif col == "GPA": colNum = 3f.readline()Info = f.readlines()res = []for e in Info:e = e.strip()eList = e.split()if colNum != 1:exp = eList[colNum] + op + valelse:exp = "'" + eList[colNum] + "'" + op + "'" + val + "'"if eval(exp):res.append(e)f.close()return res
for e in select("class1.txt","Credit",">=","15"):print (e)#<程序:对文件class1.txt中学生进行排序>
def sort(path,col,direct):	
#direct表示排序方向,">"为从大到小排序,"<"相反。colNum = 0if col == "Credit": colNum = 2elif col == "GPA": colNum = 3ifrev = Falseif direct == ">":ifrev = Truef = open(path,"r")f.readline()Info = f.readlines()res = []for e in Info:eList = e.split()res.append(eList)res =sorted(res, key=lambda res: res[colNum],reverse=ifrev) 
#第三个参数为排序方向f.close()return res
L = [('b',2),('a',1),('c',3),('d',4)]
print (sorted(L, key=lambda x:x[1]))

 

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

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

相关文章

网络视频ts格式文件下载及将其合成单一视频文件

一些网站会将视频分割成n个ts文件。 用猫抓chrome插件&#xff0c;抓取index.m3u8&#xff0c;可得到众多ts文件下载地址。 可用迅雷打包下载ts文件以及index.m3u8文件&#xff0c;但有时会出现下载不了的情况&#xff0c;怀疑是请求报头的问题上。 若迅雷下载不了&#xff…

PCB布局,布线技巧总结

PCB布局 在设计中&#xff0c;布局是一个重要的环节。布局结果的好坏将直接影响布线的效果&#xff0c;因此可以这样认为&#xff0c;合理的布局是PCB设计成功的第一步。 布局的方式分两种&#xff0c;一种是交互式布局&#xff0c;另一种是自动布局&#xff0c;一般是在自动布…

python学习实例(7)

# #第8章 信息安全&#xff08;Information Security&#xff09;的python程序 ## #8.3 措施和技术 ## #8.3.1 密码学 ##非对称加密#<程序&#xff1a;把n分解成p*q> import math n 221 m int(math.ceil(math.sqrt(n))) flag 0 for i in range(2,m1,1):if n % i 0:pr…

什么是TTL电平、CMOS电平、RS232电平

工作中遇到一个关于电平选择的问题,居然给忘记RS232电平的定义了,当时无法反应上来,回来之后查找资料才了解两者之间的区别,视乎两年多的时间,之前非常熟悉的一些常识也开始淡忘,这个可不是一个好的现象.:-),还是把关于三种常见的电平的区别copy到这里.做加深记忆的效果之用.. …

RFI滤波器电路

RFI滤波器电路 最实用解决方案是通过使用一个差分低通滤波器在仪表放大器前提供 RF 衰减滤波器。该滤波器需要完成三项工作&#xff1a;尽可能多地从输入端去除 RF能量&#xff0c;保持每个输入端和地之间的 AC 信号平衡&#xff0c;以及在测量带宽内保持足够高的输入阻抗以避免…

使用Ultra Librarian 生成PCB库文件

第一步&#xff1a;找到对应芯片的CAD文件&#xff0c;以OPA350为例&#xff1a; http://www.ti.com/product/opa350 第二步&#xff1a; 下载上图右边连接的 Ultra Librarian.zip &#xff0c; 然后根据提示&#xff0c;安装。 安装好后打开Ultra Librarian&#xff0c;会出现…

借汉诺塔理解栈与递归

我们先说&#xff0c;在一个函数中&#xff0c;调用另一个函数。 首先&#xff0c;要意识到&#xff0c;函数中的代码和平常所写代码一样&#xff0c;也都是要执行完的&#xff0c;只有执行完代码&#xff0c;或者遇到return&#xff0c;才会停止。 那么&#xff0c;我们在函…

简单迷宫问题

迷宫实验是取自心理学的一个古典实验。在该实验中&#xff0c;把一只老鼠从一个无顶大盒子的门放入&#xff0c;在盒子中设置了许多墙&#xff0c;对行进方向形成了多处阻挡。盒子仅有一个出口&#xff0c;在出口处放置一块奶酪&#xff0c;吸引老鼠在迷宫中寻找道路以到达出口…

qt超强绘图控件qwt - 安装及配置

qwt是一个基于LGPL版权协议的开源项目&#xff0c; 可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类&#xff0c;其目标是以基于2D方式的窗体部件来显示数据&#xff0c; 数据源以数值&#xff0c;数组或一组浮点数等方式提供&#xff0c; 输出方式可以是…

BFPRT

在一大堆数中求其前k大或前k小的问题&#xff0c;简称TOP-K问题。而目前解决TOP-K问题最有效的算法即是BFPRT算法&#xff0c;其又称为中位数的中位数算法&#xff0c;该算法由Blum、Floyd、Pratt、Rivest、Tarjan提出&#xff0c;最坏时间复杂度为O(n)O(n)。 读者要会快速排序…

180°舵机的使用步骤

一.步骤 1.首先查看舵机的运行参数&#xff0c;包括工作的电压和电流&#xff0c;转1&#xff08;60&#xff09;需要的脉宽是多少。 2.根据舵机提供的参数&#xff0c;算出需要的PWM的周期和脉宽的范围。 3.通过单片机或者其他数字电路产生相应的PWM波&#xff0c;便可以驱…

Qt开源项目

图像处理&#xff1a; Krita digikam inkscape 编辑器&#xff1a; LiteIDE QDevelper KDeveloper Monkey Studio TeXstudio 绘图&#xff1a; ZeGrapher QtiPlot qcustomplot QWT HotShots Inkscape 三维建模&#xff1a; QCAD FreeCAD OpenModelica LibreCAD 音乐&#xff1a…

使用Python作为计算器

数值 1.python支持基本的数学运算符&#xff0c;而且应用python你可以像写数学公式那样简单明了。 eg: >>> 2 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 # division always returns a floating point number 1.6 2.除法…

java整体打印二叉树

一个调的很好的打印二叉树的代码。 用空格和^v来表示节点之间的关系。 效果是这样&#xff1a; Binary Tree: v7v v6v ^5^ H4H …

前缀树

是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以经常被搜索引擎系统用于文本词频统计。它的优点是&#xff1a;利用字符串的公共前缀来减少查询时间&#xff0c;最大限度地减少无谓的字符…

学习4层板设计

今天是第一天尝试设计四层PCB板&#xff0c;以前只画过双层板&#xff0c;所以今天花了好多时间来熟悉多层板的设计方法&#xff0c;现在做一下整理&#xff0c;也方便其他同胞少走弯路~~~我用的软件是Altium Designer 6&#xff08;AD6&#xff09;步骤如下&#xff1a; 1、随…

PCB设计的基本步骤

一.方案的设计 1.与客户沟通&#xff0c;确定电路的功能和相关设计指标&#xff08;如&#xff1a;电源&#xff0c;功耗等&#xff09;。 2.画出项目的硬件功能框图。 3.设计出多种方案&#xff0c;并对多种方案进行对比&#xff0c;最终选出最合适的方案。 4.根据上述所…

堆应用例题三连

一个数据流中&#xff0c;随时可以取得中位数。 题目描述&#xff1a;有一个源源不断地吐出整数的数据流&#xff0c;假设你有足够的空间来保存吐出的数。请设计一个名叫MedianHolder的结构&#xff0c;MedianHolder可以随时取得之前吐出所有树的中位数。 要求&#xff1a; 1…

HistCite 的使用方法

摘要 读文献自然要读精品&#xff0c;在面对一个陌生领域&#xff0c;如何才能以最快速度定位精品文献呢&#xff1f;本文将详细介绍 HistCite 的使用方法&#xff0c;结合 Web of Science 和 Endnote &#xff0c;演示如何在几个小时之内&#xff0c;对某个陌生领域的文献进行…

数组基操三连(2)

转圈打印矩阵 题目&#xff1a; 给定一个整型矩阵matrix&#xff0c;请按照转圈的方式打印它。例如&#xff1a;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,打印结果为&#xff1a;1,2,3,4,5,12,16,15,14,13,9,5,6,7,11,10 要求&#xff1a; 额外空间复杂度为O&#xff08;1&a…