我正在研究Python中的类和OOP结构,试图解决以下问题:
给出一个表格的文本文件:
Name: [someName] Course: [someCourse] Name: [someName] Course: [someCourse] ...
包含学生的[NAME]和由此拍摄的[COURSE] 学生。我们假设没有两个学生有相同的名字,因此:
Name: Anderson Course: Biology Name: Peter Course: History Name: Anderson Course: Mathematics
表明安德森同时兼顾生物学和数学。
问题:
- 阅读输入文件
- 提取学生姓名和课程
- 打印出特定学生所选课程的摘要
例如,基于上面的示例文件的结果应该是 生成:
Student: Anderson Courses: Biology Mathematics Student: Peter Courses: History
到目前为止我有什么:
我能够读取文件并提取有关名称和课程的信息。我已将这些值添加到两个列表(数组)中, student_name 和 student_course 。从上面的示例文本文件中,这将产生以下列表:
student_name = ["Anderson", "Peter", "Anderson"]
student_course = ["Biology", "History", "Mathematics"]
表示索引对应。也就是说,位于 student_name [i] 的学生参加位于 student_course [i] 的课程。
我还有一个具有以下结构的Student类:
class Student(object):
#Variables here
student_list = [] #empty list of students
def __init__(self, name, course):
self.name = name
self.course = course
def check_student(self, name, course):
"""
Checks if student (given by name) is already in student list.
Function already_exists() works!
"""
if(self.already_exists(self.name) == false): #If not in list
self.student_list.append(self.name) #Add student to list
##### NEED help HERE ####
#Add course to already existing Student.
else:
##### NEED help HERE ####
#Create student + add course.
我们的想法是遍历 student_name 和 student_course 列表,以更新学生信息。也就是说,如果遇到新名称:将其添加到student_list,并记下课程。相比之下,如果名称已经存在:只需将课程添加到学生。
问题:
有关如何将课程添加到现有学生对象或完全创建新学生的任何帮助,我们非常感谢。
答案 0 :(得分:0)
我认为你最好有一个单独的“学生”课程,而不是在学生班上有一个student_list。
学生班可以将学生姓名地图保存到学生实例。
然后,每个学生实例都可以单独负责维护课程名称列表。
根据所需的输出顺序,您可能还希望在Students类上维护一组Student实例。但是,对于有效查找给定学生姓名
的Student实例,该地图仍然有用