所以我很难搞清楚,我做了两门课,一门叫课程,另一门叫成绩单。
我在转录类中有一个名为"add_course“的方法,它应该将提供给它的课程附加到一个名为"self.courses”的课程列表中。
问题是,当我在添加了一些测试课程之后,打印记录类时,它只是打印" Transcript:“,而没有添加任何内容。
class Course:
def __init__(self, number, credit, grade):
#validgrades = ['A','B','C','D','F','IP']
#if grade not in validgrades:
#raise CourseError("bad grade" + "'" + grade + "'" )
self.number = number #string
self.credit = credit #int
self.grade = grade #string
def __str__(self):
return ('%s: credit %d, grade %s' % (self.number, self.credit, self.grade))
def __eq__(self,other):
return self.number==other.number and self.credit==other.credit and self.grade==other.grade
def is_passing(self):
if self.grade == 'F' or self.grade == 'IP':
return False
else:
return True
c1 = Course("CS112",4,"A")
print(c1)
print(c1.is_passing())
c2 = Course("ENGH101", 3, "B")
print(c1==c2)
c3 = Course("MATH113", 4, "IP")
class Transcript:
def __init__(self):
courses = []
self.courses = courses
def __str__(self):
strtrans=""
strtrans +='Transcript:\n'
for i in self.courses:
strtrans+= '%s\n\t' %(i)
return strtrans
def __eq__(self,other):
if self.courses == other.courses:
return True
else:
return False
def add_course(self,course):
for i in self.courses:
self.courses.append(course)
def course_by_number(self, number):
for i.number in self.courses:
if self.number == number:
print('It worked!')
return True
elif self.number == None:
return None
else:
return False
t=Transcript()
print(t)
t.add_course(c1)
t.add_course(c2)
t.add_course(c3)
print(t)输出是:
CS112:学分4,A级
真的
错误
谈话全文:
谈话全文:
当它应该是时:
谈话全文:
CS112:学分4,A级
ENGH101:学分3,B级
MATH113:学分4,IP级
发布于 2017-05-02 02:47:28
你的问题是
def add_course(self,course):
for i in self.courses:
self.course = self.courses.append(course)您正在迭代self.courses。当这个列表为空时,for循环不会运行,因为没有什么可迭代的。这实际上也会导致无限循环(直到您到达一个MemoryError),因为您要追加到正在迭代的同一个列表中。
您可能会看到的另一个问题是,注释中描述的@Nullman是list.append返回None的
self.courses = self.courses.append(course)在您的第一个调用列表现在是None之后,第二次调用add_course时,它将引发
AttributeError: 'NoneType' object has no attribute 'append'所以你的功能应该是
def add_course(self,course):
self.courses.append(course)https://stackoverflow.com/questions/43729166
复制相似问题