【发布时间】:2020-06-29 04:39:26
【问题描述】:
我正在尝试创建一个班级来创建学生成绩信息系统。
尝试在我的班级中创建“更新”功能时遇到问题。
这是我的班级的样子:
class StudentManagement(object):
def __init__(self):
""" Initializes a dictionary to keep track of students' grades """
self.student_dict = {}
def add_student(self,num_students):
""" Add students to your student dictionary. All newly added students will have 0 for assignments."""
for i in range(num_students):
student_id = input("Type in student ID for student " + str(i+1) + ": ")
self.student_dict[student_id] = 0
print(self.student_dict)
def add_initial_assignments(self, assignment_name): # list of assignment names
""" Add assignments to student dictionary. All assignments will be set to 0"""
self.assignment_dict = {}
for assignment in assignment_name:
self.assignment_dict[assignment] = 0
for key in self.student_dict:
self.student_dict[key] = self.assignment_dict
print(self.student_dict)
def add_new_assignment(self, new_assignment): # one new assignment only
""" Add a new assignment to existing assignments in student dictionary"""
for key in self.student_dict:
self.student_dict[key][new_assignment] = 0
print(self.student_dict)
def update(self, student_id, assignment_name, value):
"""Updates the assignment score for a given student id"""
for key in self.student_dict:
if key == student_id:
self.student_dict[student_id][assignment_name] = value
print(self.student_dict)
new = StudentManagement()
print("ADDED 3 students")
new.add_student(3)
print("\n")
print("ADDED Initial assignments")
new.add_initial_assignments(['Exam 1','Exam 2'])
print("\n")
print("ADDED new Quiz assignment")
new.add_new_assignment('Quiz 1')
print("\n")
print("UPDATED score for student Student_1")
new.update(student_id = 'Student_1',assignment_name = 'Quiz 1',value = 100)
当我使用最后一行代码更新学生的作业成绩时,该学生的测验 1 的所有成绩都变为 100,而不仅仅是 Student_1。我不确定我是否正确理解了 self.student_dict。我不想每次更新学生信息时都创建一个全新的字典。我该怎么办?
【问题讨论】:
标签: python class dictionary nested