class student :
def __init__(self,name,age,grade):
self.name = name
self.age = age
self.grade = grade # 0 - 100
def get_grade(self):
return self.grade
class Course :
def __init__(self, name, max_students):
self.name = name
self.max_students = max_students
self.students = []
def add_student(self, student):
if len(self.students) < self.max_students :
self.students.append(student)
return True
return False
def get_average_grade(self):
value = 0
for i in self.students :
value += student.get_grade() # this part had the error
return value / len(self.students)
s1 = student('Bob', 12, 50)
s2 = student('Joe', 12, 60)
s3 = student('Sadie', 12, 100)
Course1 = Course('Chemistry', 5)
Course1.add_student(s1)
Course1.add_student(s2)
Course1.add_student(s3)
print(Course1.students[0].name)
print(Course1.get_average_grade())
答案 0 :(得分:0)
for i in self.students :
value += student.get_grade() # this part had the error
出现错误是因为您使用的是类名student
而不是循环主题i
。
虽然我可能会选择一个更好的变量名称,但是如果您改用value += i.get_grade()
,则会更成功。
或者您可以将get_average_grade()
的整个主体替换为更多Python语言:
return sum([item.get_grade() for item in self.students]) / len(self.students)
顺便说一句,您也许还想考虑当列表中没有 个学生时会发生什么。