Python raw_input 转入类中声明的字典

0 投票
1 回答
4374 浏览
提问于 2025-04-15 16:43

我刚接触Python,感觉非常陌生,真的需要搞清楚这个问题。我想通过raw_input来询问用户模块和成绩,然后把这些信息放进已经在学生类中定义好的字典里,那个字典叫做grades。可是我完全不知道该怎么做!提前谢谢大家的帮助!

students = [] # List containing all student objects (the database)

def printMenu(): 
    print "------Main Menu------\n" "1. Add a student\n" "2. Print all students\n" "3. Remove a student\n" "---------------------\n"


class Student:
    firstName = ""
    lastName = ""
    age = 0
    studentID = ""
    degree = ""
    grades = {"Module Name":"","Grade":""}

    def setFirstName(self, firstName):
        self.firstName = firstName

    def getFirstName(self):
        return self.firstName

    def setLastName(self, lastName):
        self.lastName = lastName

    def getLastName(self):
        return self.lastName

    def setDegree(self,degree):
        self.degree = degree

    def getDegree(self):
        return self.degree

    def setGrades(self, grades):
        self.grades = grades

    def getGrades(self):
        return self.grades

    def setStudentID(self, studentid):
        self.studentid = studentid

    def getStudentID(self):
        return self.studentid

    def setAge(self, age):
        self.age = age

    def getAge(self):
        return self.age


def addStudent():
        count = 0
        firstName = raw_input("Please enter the student's first name: ")
        lastName = raw_input("Please enter the student's last name: ")
        degree = raw_input("Please enter the student's degree: ")
        while count != -1:
            student.grades = raw_input("Please enter the student's module name: ")
            #student.grades["Grade"] = raw_input("Please enter the grade for %: " % grades)

        studentid = raw_input("Please enter the student's ID: ")
        age = raw_input("Please enter the student's age: ")        

        student = Student() # Create a new student object
        student.setFirstName(firstName) # Set this student's first name
        student.setLastName(lastName)
        student.setDegree(degree)
        student.setGrades(grades)
        student.setStudentID(studentid)
        student.setAge(age)

        students.append(student) # Add this student to the database

1 个回答

2

几点建议:

  1. 把你类里面的属性初始化放到一个叫做 __init__ 的方法里:

  2. 像Jeffrey说的那样,去掉所有的获取器和设置器。

  3. 使用一个字典,字典的键是模块名,值是分数:

一些代码片段:

def __init__(self, firstName, lastName, age, studentID, degree):
    self.firstName = firstName
    self.lastName = lastName
    ...
    self.grades = {}

还有:

    while True:
        module_name = raw_input("Please enter the student's module name: ")
        if not module_name:
            break
        grade = raw_input("Please enter the grade for %s: " % module_name)
        student.grades[module_name] = grade

撰写回答