Python raw_input в словарь объявлен в классе - PullRequest
0 голосов
/ 05 декабря 2009

Я невероятно новичок в Python, и мне действительно нужно уметь это решать. Я хочу спросить пользователя через raw_input, что такое модуль и оценка, а затем поместить это в словарь, уже определенный в классе Student как оценки. Я понятия не имею, что делать! Заранее спасибо!

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 голосов
/ 05 декабря 2009

Несколько вещей:

  1. Переместите инициализацию атрибутов вашего класса в метод __init__:

  2. Избавьтесь от всех добытчиков и сеттеров, как говорит Джеффри.

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...