【发布时间】:2016-07-27 04:10:14
【问题描述】:
我正在从事项目,但我正在努力正确使用类和面向对象而不偷工减料。
我现在将发布项目以澄清我的需求:
一个学生对象包括:
FirstName: string LastName: string Birthdate: tuple, such as (1,17,1998) TechID: string Grades: list of tuples, such as [(3127,”C”,4),(2496,”B”,3),(6703,”D”,3)] So one student might look like this: FirstName: “Bob” LastName: “Smith” Birthdate: (2,17,1998) TechID: “43546578” Grades: [(5930,”B”,4),(7660,”C”,4),(3122,”C”,3),(5438,”C”,2), (6730,”C”,4),(4268,”C”,4),(5709,”D”,4),(8071,”B”,4)]每个学生的数据都可以在文本文件中找到。你的程序 应酌情从每个文件中读取数据。 (不要 更改输入文件的格式。)您的 getData 函数应该 一次读取所有数据。一旦所有的数据都 被读入适当的结构,该数据应该被传递 回到主程序。你的程序不应该来回走 在读取数据和返回数据之间。
创建学生列表。不要将学生一个一个地处理为 它们被创建或被放置在列表中。创建一个学生, 将其添加到学生对象列表中,重复。一旦名单 学生完成后,通过列表输出每个学生的报告 学生。
您将需要三种方法来处理学生对象。
currentAge:学生几岁?
当前 GPA:学生的 GPA 是多少?
报告:将该学生的输出添加到输出文件中。
每个输出文件项应如下所示:
Bob Smith (#43546578) Age: 18 (02/17/1998) note the mm/dd/yyyy format GPA: 2.14 (29 credits)至少会有三个 Python 文件。一个用于 getData,一个用于 学生类及其方法,以及一个与主程序。
student.txt 如下所示:
87965164,Paris,Yu,6/27/1997 87965219,Heath,Moss,10/13/1996 87965187,Cale,Blankenship,10/22/1995 87965220,Terrence,Watkins,12/7/1996 87965172,Ansley,Padilla,3/30/1997grades.txt 看起来像这样:
87965220,2915D3 87965219,7252C3 87965164,6964D3 87965219,5569A4 87965220,8923C4 87965187,2818A4 87965187,5293C3 87965187,5753C3 87965172,8581B3 87965219,3904B4 87965220,5801D3 87965219,3418A3 87965219,3544C4 87965220,7626A4 87965187,5092D3 87965187,3312C4 87965164,8119C4
这是我的代码。我的问题是我开始意识到我没有很好地利用类和对象。我正在寻找一些关于我应该如何进行这个项目的指导或示例。如果有人能够帮助创建应该存在哪些类和方法的模板,那就太棒了。
import re
class GetData:
fullList = []
birthdays = []
students = []
def studentsInFile(self):
count = 0
inputStudents = open('students.txt' , 'r')
for line in inputStudents:
self.fullList.append(re.split('[,/]',line.strip()))
inputStudents.close()
numOfStudents = len(self.fullList)
while count != numOfStudents:
self.students.append(self.fullList[count][0])
self.birthdays.append(self.fullList[count][3:6])
self.birthdays[count][:] = [int(x) for x in self.birthdays[count]]
count += 1
def gradesInFile(self):
inputGrades = open('grades.txt' , 'r')
inputGrades.close()
getData = GetData()
getData.studentsInFile()
【问题讨论】: