day24作业

1.所有程序都因该使用面向对象来设计吗?为什么?

不是,面向对象只对有扩展性有要求的程序需要使用面向对象使用,如果程序不需要扩展,一般使用面向过程式编程。

2.什么是对象 什么是类

生活中对象就是一个能够确实存在的个体,类则是根据对象总结特点和行为的虚拟概念。

编程中类是属性和函数(行为)组成的定义,对象是依照类声明的实例。

3.在面向过程编程中我们思考解决方案时,是分析完成任务时需要哪些步骤,按照什么样的顺序来编写,而在面向对象编程中我们从操作者转变为指挥者 首先思考的是什么?

由什么的对象,那些对象来实现哪些功能,从而解决问题。

4.一个类中通常包含变量和函数,它们分别用于描述什么?

变量表示这个类对象公共的属性,函数则这类对象共有的行为或功能。

5.类在定义阶段发生了什么

只有包含该类的py被执行,就会做两件事情

  1、就会创建的名称空间

  2、执行代码,将产生额名称放入名称空间

6.创建对象时发生了什么

1.创建一个空对象

2。执行__init__函数,并且自动传入这个对象

7.什么是绑定方法,和普通函数有什么区别

绑定方法是只存在对象的方法,调用是必须通过对象才能调用,不同函数直接加()就可以调用。

8.根据需求编写程序,
  学生成绩管理系统
    1.根据姓名查看学生成绩
    2.根据科目查看学生成绩
    3.查看总平均分
    4.根据姓名,和科目,查看成绩
    5.根据姓名删除学生信息

先分析需要哪些对象:
  学生对象
    属性:姓名,年龄,语文成绩,数学成绩,英语成绩
    行为:自我介绍(输出自己的姓名 年龄 成绩)
  管理器对象:
    属性:一堆学生(一个列表 里面装一堆学生对象 可以手动创建放进去)
  行为:上述五个功能

class Student:
    def __init__(self,name,age,cs,ms,es):
        self.name = name
        self.age = age
        self.cs =cs
        self.ms = ms
        self.es =es

    def introduce_oneself(self):
        print('我的名字是 %s, 年龄 :%s,语文成绩:%s,数学成绩:%s,英文成绩:%s'
              %(self.name,self.age,self.cs,self.ms,self.es))

class AdminStu:
    def __init__(self,*args):
        self.students = list(args)

    def name_check_score(self,name):
        for stu in self.students:
            if stu.name == name:
                print('语文:%s, 数学:%s, 英语:%s'%(stu.cs,stu.ms,stu.es))

    def subject_check_score(self,subject):
        for stu in self.students:
            print(stu.name,stu.__dict__[subject])

    def check_total_score(self):
        cs_sum =0
        ms_sum = 0
        es_sum = 0
        count = 0
        for stu in self.students:
            count +=1
            cs_sum += stu.cs
            ms_sum += stu.ms
            es_sum += stu.es
        print('语文的平均成绩:%s'%(cs_sum/count),\
              '数学的平均成绩:%s'%(ms_sum/count),\
              '英语的平均成绩:%s'%(es_sum/count))


    def name_and_subject_check_score(self,name,subject):
        for stu in self.students:
            if stu.name == name:
                print(name,'成绩为:%s'%stu.__dict__[subject])

    def del_stu(self,name):
        for stu in self.students:
            if stu.name == name:
                self.students.remove(stu)
                print('%s 已删除'%name)


s1 = Student('s1',22,80,80,70)
s2 = Student('s2',23,85,80,90)
s3 = Student('s3',24,100,90,85)

s1.introduce_oneself()


as1 = AdminStu(s1,s2,s3)
as1.name_check_score('s1')
as1.subject_check_score('cs')
as1.check_total_score()
as1.name_and_subject_check_score('s2','es')
as1.del_stu('s3')
print([i.name for i in as1.students])

#结果:
'''
我的名字是 s1, 年龄 :22,语文成绩:80,数学成绩:80,英文成绩:70
语文:80, 数学:80, 英语:70
s1 80
s2 85
s3 100
语文的平均成绩:88.33333333333333 数学的平均成绩:83.33333333333333 英语的平均成绩:81.66666666666667
s2 成绩为:90
s3 已删除
['s1', 's2']
'''

猜你喜欢

转载自www.cnblogs.com/msj513/p/9832016.html