问题描述
刚开始使用 Python 中的 OOP,使用了“Tech with Tim”的一组教程 为学生数据库创建了几个类 - 这是相关代码。
class Student:
def __init__(self,name,age,grade):
self.name = name
self.age = age
self.grade = grade
def get_grade(self):
return self.grade
和
def get_avarage_grade(self):
value = 0
for student in self.students:
value += student.get_grade()
return value / len(self.students) # here
加号
class Course:
def __init__(self,max_students):
self.name = name
self.max_students = max_students
self.students = []
我认为问题出在第二个函数中。 为什么我会收到 ZeroDivisionError 以及如何修复它?
解决方法
当 self.students 为空列表时会出现问题:[ ]。 len(self.students) 然后将返回 0。当您尝试像您一样计算平均值时,这将产生错误。您需要决定在 get_avarage_grade() 方法中要返回什么,以防 self.students 列表为空,例如一些 default_value。
def get_avarage_grade(self):
default_value = -1
if len(self.students) == 0:
return default_value
value = 0
for student in self.students:
value += student.get_grade()
return value / len(self.students) here
,
先检查students是否为空,如果students大于0,再进行运算。
def get_avarage_grade(self):
value = 0
for student in self.students:
value += student.get_grade()
if len(self.students) > 0:
return value / len(self.students)
return value
,
这里:
return value / len(self.students)
您的类需要一个列表,每次执行此操作时其值都会增加一:
value += student.get_grade()
与不同的学生...