class SequenceTSet(): def __init__(self): self.TSet=[ ] def readFile(self, filname): #补充代码,能将文件中的信息,读入到self.Tset中 def writeFile(self, filname): #补充代码,能将self.Tset信息,写入到文件filname中 def sortAndprint(self,filename): #补充代码,对TSet中的学生的身高进行升序排序 def cntHeight(self, y): #补充代码,输出TSet中身高大于y的学生个数 def splitSet(self, x,filename): #补充代码,能将TSet中性别为x的学生都删除 def del(self, sid): #补充代码,删除TSet中学号为sid的学生 def insert(self, hei): #补充代码,添加身高为hei的学生到TSet中,要求添加学生后,学生表中的身高保持有升序。 建立如下的 学生信息文件 ,每行存入 学号、姓名、 性别、 身高等信息 ,存为student.txt文件 ,读此文件 ,调用 学生类中的所有函数,进行数据 维护后,重新存回到文件 student.txt中 。 1 杨勇 0 1.78 2 左千 1 1.64
时间: 2023-06-14 18:08:24 浏览: 96
Readfile.zip_gps读取_matlab readfile_read-N-file
5星 · 资源好评率100%
代码如下:
```python
class Student():
def __init__(self, sid, name, gender, height):
self.sid = sid
self.name = name
self.gender = gender
self.height = height
class SequenceTSet():
def __init__(self):
self.TSet = []
def readFile(self, filename):
with open(filename, 'r') as f:
for line in f:
sid, name, gender, height = line.strip().split()
self.TSet.append(Student(sid, name, int(gender), float(height)))
def writeFile(self, filename):
with open(filename, 'w') as f:
for student in self.TSet:
f.write(f"{student.sid}\t{student.name}\t{student.gender}\t{student.height:.2f}\n")
def sortAndprint(self, filename):
self.TSet.sort(key=lambda student: student.height)
self.writeFile(filename)
for student in self.TSet:
print(f"{student.sid}\t{student.name}\t{student.gender}\t{student.height:.2f}")
def cntHeight(self, y):
cnt = 0
for student in self.TSet:
if student.height > y:
cnt += 1
print(f"There are {cnt} students whose height is greater than {y:.2f}.")
def splitSet(self, x, filename):
self.TSet = [student for student in self.TSet if student.gender != x]
self.writeFile(filename)
def del(self, sid):
self.TSet = [student for student in self.TSet if student.sid != sid]
def insert(self, hei):
student = Student(str(len(self.TSet)+1), '', 0, hei)
self.TSet.append(student)
self.TSet.sort(key=lambda student: student.height)
seqTSet = SequenceTSet()
seqTSet.readFile("student.txt")
seqTSet.sortAndprint("student.txt")
seqTSet.cntHeight(1.70)
seqTSet.splitSet(1, "student.txt")
seqTSet.del("1")
seqTSet.insert(1.80)
seqTSet.writeFile("student.txt")
```
其中,`readFile` 方法可以将文件中的学生信息读入到 `self.TSet` 中;`writeFile` 方法可以将 `self.TSet` 中的学生信息写入到文件中;`sortAndprint` 方法可以对 `self.TSet` 中的学生身高进行升序排序,并将排序后的结果输出到控制台和文件中;`cntHeight` 方法可以输出 `self.TSet` 中身高大于 `y` 的学生个数;`splitSet` 方法可以删除 `self.TSet` 中性别为 `x` 的学生;`del` 方法可以删除学号为 `sid` 的学生;`insert` 方法可以添加身高为 `hei` 的学生到 `self.TSet` 中,并保持学生表中的身高升序。最后,我们可以调用这些方法,对学生信息进行维护,并将结果重新存回到文件 `student.txt` 中。
阅读全文