Python - 具有扩展列表

时间:2015-09-18 07:58:47

标签: python list function class oop

我正在研究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,并记下课程。相比之下,如果名称已经存在:只需将课程添加到学生。

问题

有关如何将课程添加到现有学生对象或完全创建新学生的任何帮助,我们非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为你最好有一个单独的“学生”课程,而不是在学生班上有一个student_list。

学生班可以将学生姓名地图保存到学生实例。

然后,每个学生实例都可以单独负责维护课程名称列表。

根据所需的输出顺序,您可能还希望在Students类上维护一组Student实例。但是,对于有效查找给定学生姓名

的Student实例,该地图仍然有用