function invoke objects DEMO
2015-07-10 09:11
387 查看
#quote from MIT 'introduction to computation and programming using python, Revised' import datetime class Person(object): def __init__(self, name): """Create a person""" self.name = name try: lastBlank = name.rindex(' ') self.lastName = name[lastBlank+1:] except: self.lastName = name self.birthday = None def getName(self): """Returns self's full name""" return self.name def getLastName(self): """Returns self's last name""" return self.lastName def setBirthday(self, birthdate): """Assumes birthdate is of type datetime.date Sets self's birthday to birthdate""" self.birthday = birthdate def getAge(self): """Returns self's current age in days""" if self.birthday == None: raise ValueError return (datetime.date.today() - self.birthday).days def __lt__(self, other): """Returns True if self'name is lexicographically less than other's name, and False otherwise""" if self.lastName == other.lastName: return self.name < other.lastName return self.lastName < other.lastName def __str__(self): """Returns self's name""" return self.name class MITPerson(Person): nextIdNum = 0 #identificaiton number def __init__(self, name): Person.__init__(self, name) self.idNum = MITPerson.nextIdNum MITPerson.nextIdNum += 1 def getIdNum(self): return self.idNum def __lt__(self, other): return self.idNum < other.idNum class Student(MITPerson): pass class UG(Student): def __init__(self, name, classYear): MITPerson.__init__(self, name) self.year = classYear def getClass(self): return self.year class Grad(Student): pass class Grades(object): """A mapping from students to a list of grades""" def __init__(self): """Create empty grade book""" self.students = [] self.grades = {} self.isSorted = True def addStudent(self, student): """Assumes: student is of type Student Add student to the grade book""" if student in self.students: raise ValueError('Duplicate student') self.students.append(student) self.grades[student.getIdNum()] = [] self.isSorted = False def addGrade(self, student, grade): """Assumes: grade is a float Add grade to the list of grades for student""" try: self.grades[student.getIdNum()].append(grade) except: raise ValueError('Student not in mapping') def getGrades(self, student): """Return a list of grades for students""" try: #return copy of student's grades return self.grades[student.getIdNum()][:] except: raise ValueError('Student not in mapping') def getStudents(self): """Return a list of the students in the grade book""" if not self.isSorted: self.students.sort() self.isSorted = True for s in self.students: yield s def gradeReport(course): """Assumes course is of type Grades""" report = '' for s in course.getStudents(): tot = 0.0 numGrades = 0 for g in course.getGrades(s): tot += g numGrades += 1 try: average = tot/numGrades report += '\n' + str(s) + '\'s mean grade is ' + str(average) except ZeroDivisionError: report += '\n' + str(s) + ' has no grades' return report
print gradeReport(g)
Eric Xing's mean grade is 95.6666666667
Robert Miller's mean grade is 84.0
相关文章推荐
- [Objective-C] strong/weak 属性——狗项圈的比喻
- GitHub 上排名前 100 的 Objective-C 项目简介
- interweaving of objects DEMO
- 黑马程序员 面向对象 多态 需求 object
- [Objective-C] self 和 this 的区别
- Java 兑换ObjectC代码
- ObjectStreamDemo
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十七章 内存管理和自动计数
- 编写高质量的Objective-C代码(转)
- Objective-C(十八、谓语使用及实例说明)——iOS开发基础
- java查询mysql的char字段List<Object[]>数据被截断
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- Objective-C 计算文件夹里的代码行数
- Objective-C(十七、KVC键值编码及实例说明)——iOS开发基础
- Objective-C(十六、内存管理,自动释放池,ARC,强指针,弱指针,方法族)——iOS开发基础
- 总结js创建object的方式(对象)
- Windows下安装Object C开发环境,及Hello Word
- objective-c之Foundation
- [CVPR2015]Learning to propose objects
- 【iOS界面开发】Objective-C自动布局(Auto Layout & SizeClass)