精华内容
下载资源
问答
  • 请以面向对象的编程方式完成以下要求。 某购物网站每日的用户购物数据都需要汇总整理,某天的购物数据如表所示。请创建一个类,并有以下的方法可以被调用: 1.实例化购物数据类,传入购物数据表格的文件路径后,并...
  • Educoder题目Python面向对象编程实训答案解析.md
  • Educoder题目Python面向对象编程综合运用答案解析.md
  • 实验题目python面向对象程序设计

    千次阅读 多人点赞 2020-12-01 22:27:33
    (建议在父类和子类中使用同名函数以实现多态,如在SchoolMem类、Student类和Teacher类中分别实现printInfo方法输出对象的信息。) class SchoolMem: def __init__(self,name,sex,age): self.name=name self.sex = ...

    1、定义并实现一个矩形类Rectangle,其私有实例成员为矩形的左下角与右上角两个点的坐标,能设置左下角和右上角两个点的位置,能根据左下角与右上角两个点的坐标计算矩形的长、宽、周长和面积,另外根据需要适当添加其他成员方法和特殊方法(如构造方法)。实现并测试这个类。

    class Rectangle:
        def __init__(self,New_zxx,New_zxy,New_ysx,New_ysy):
            self.zxx=New_zxx
            self.zxy=New_zxy
            self.ysx=New_ysx
            self.ysy=New_ysy
            self.length = self.ysx - self.zxx
            self.width = self.ysy - self.zxy
        def perimeter(self):
            print('周长:{}'.format(2*(self.length+self.width)))
        def area(self):
            print('面积为:{}'.format(self.length*self.width))
    
    a = Rectangle(0,0,1,2)
    print(a.length)
    print(a.width)
    a.perimeter()
    a.area()

    2、创建SchoolMem类,该类中包含三个数据成员:姓名、性别、年龄;创建Student类,继承自SchoolMem类,添加额外三个数据成员:班级、学号和数量统计;创建Teacher类,继承自SchoolMem类,添加额外三个数据成员:学院、工号和数量统计。要求给每个类适当添加属性、成员方法和特殊方法(如构造方法),实现学生和教师信息的输入输出。实现并测试这个类。(建议在父类和子类中使用同名函数以实现多态,如在SchoolMem类、Student类和Teacher类中分别实现printInfo方法输出对象的信息。)

    class SchoolMem:
        def __init__(self,name,sex,age):
            self.name=name
            self.sex = sex
            self.age = age
    
        def Alter(self):
            self.name = input('姓名')
            self.sex = input('性别')
            self.age = input('年龄')
        def PrintInfo(self):
            print(self.name)
            print(self.sex)
            print(self.age)
    class Student(SchoolMem):
        total = 0
        def __init__(self,name,sex,age,cno,sno):
            super().__init__(name,sex,age)
            self.cno = cno
            self.sno = sno
            Student.total+=1
        def Alter(self):
            self.cno = input('输入学生所属班级:')
            self.sno = input('输入学生学号:')
        def PrintInfo(self):
            super(Student, self).PrintInfo()
            print(self.cno)
            print(self.sno)
    
    class Teacher(SchoolMem):
        total = 0
        def __init__(self,name,sex,age,cono,jno):
            super().__init__(name, sex, age)
            self.cono = cono
            self.jno = jno
            Teacher.total +=1
        def Alter(self):
            self.cono = input('输入老师所属学院:')
            self.jno = input('输入老师工号:')
        def PrintInfo(self):
            super(Teacher, self).PrintInfo()
            print(self.cono)
            print(self.jno)
    a=Student('张三','男','18',5,1902073564)
    a.PrintInfo()
    b=Teacher('李四','男','30',2,1351332)
    b.PrintInfo()

    3、给如下自定义列表类Mylist添加运算符重载函数,实现自定义列表的加法和乘法运算

            class Mylist:

                def __init__(self,iterable=()):

                    self.data = list(iterable)

    让如下代码能正确运行:

            L1 = MyList([1,2,3])

            L2 = MyList([4,5,6])

            L3 = L1+ L2

            print(L3)  #输出MyList([1,2,3,4,5,6])

            L4 = L2 + L1

           print(L4)  #输出MyList([4,5,6,1,2,3])

            L5 = L1 * 3

            print(L5)  #输出MyList([1,2,3,1,2,3,1,2,3])

            L6 = 3 * L1

            print(L6)  #输出MyList([1,2,3,1,2,3,1,2,3])

            L1 += L2

            print(L1)  #输出MyList([1,2,3,4,5,6])

    L7 = -L1

    print(L7) #输出MyList([-1,-2,-3,-4,-5,-6])

    class MyList:
        def __init__(self,iterable=()):
            self.data = list(iterable)
    
        def __add__(self, other):
            a = MyList(self.data + other.data)
            return a
        def __mul__(self, n):
            b = MyList(self.data * 3)
            return b
    
        def __rmul__(self, n):
            c = MyList(3*self.data)
            return c
    
        def __iadd__(self, other):
            self.data += other.data
            return self
    
        def __neg__(self):
            e = MyList()
            for i in self.data:
                e.data.append(i*-1)
            return e
        def __repr__(self):
            return repr('MyList({})'.format(self.data))
    L1 = MyList([1,2,3])
    L2 = MyList([4,5,6])
    L3 = L1 + L2
    print(L3)  #输出MyList([1,2,3,4,5,6])
    L4 = L2 + L1
    print(L4)  #输出MyList([4,5,6,1,2,3])
    L5 = L1 * 3
    print(L5)  #输出MyList([1,2,3,1,2,3,1,2,3])
    L6 = 3 * L1
    print(L6)
    L1 += L2
    print(L1)
    L7 = -L1
    print(L7) #输出MyList([-1,-2,-3,-4,-5,-6])

    4、设计一个用于学生管理的类Student(学生)。考虑到通用性,这里只抽象出所有学生都具有的数据成员:学号、姓名、性别、年龄、班级等。要求给每个数据成员声明对应的读写属性,定义下列成员方法:学生信息的录入、显示以及修改,另外根据需要适当添加特殊方法(如构造方法)。实现并测试这个类。

    class Student:
        def __init__(self,sno='',name='',sex='',age=0,classes=0):
            self.__sno = sno
            self.__name = name
            self.__sex = sex
            self.__age = age
            self.__classes = classes
    
        def __get(self):
            return self.__sno
        def __set(self,a):
            self.__sno = a
        sno = property(__get,__set)
    
        def __get__(self):
            return self.__name
        def __set(self,a):
            self.__name = a
        name = property(__get,__set)
    
        def __get(self):
            return self.__sex
        def __set(self,a):
            self.__sex = a
        sex = property(__get,__set)
    
        def __get(self):
            return self.__age
        def __set(self,a):
            self.__age = a
        age = property(__get,__set)
    
        def __get(self):
            return self.__classes
        def __set(self,a):
            self.__classes = a
        classes = property(__get,__set)
    
        def InputInfo(self):
            print('输入学生信息')
            sno = input('学号:')
            if not (len(sno)==10):
                print('学号必须是十位')
                return None
            name = input('姓名:')
            sex = input('性别(男,女)')
            if sex not in ('男','女'):
                print('性别必须是男或女')
                return None
            age = eval(input('年龄:'))
            if not isinstance(age,int):
                print('年龄必须为整数')
                return None
            classes = input('班级:')
            self.__sno = sno
            self.__name = name
            self.__sex = sex
            self.__age = age
            self.__classes = classes
            return self
        def show(self):
            print(f'sno:{self.__sno}\nname:{self.__name}\nsex:{self.__sex}\nage:{self.__age}\nclasses:{self.__classes}')
        def alter(self):
            while True:
                print('选择您要更改的信息:')
                print('1:修改学号')
                print('2:修改姓名')
                print('3:修改性别')
                print('4:修改年龄')
                print('5:修改班级')
                print('0:退出修改')
                i = eval(input('输入选项:'))
                if i == 0:
                    self.show()
                    break
                elif i==1:
                    sno = input('输入学号:')
                    if not len(sno)==10:
                        print('学号为10位')
                        continue
    
                    self.__sno = sno
                elif i == 2:
                    name = input('输入姓名:')
                    self.__name = name
                elif i == 3:
                    sex = input('性别(男,女)')
                    if sex not in ('男', '女'):
                        print('性别必须是男或女')
                        continue
                    self.__sex = sex
                elif i == 4:
                    age = eval(input('年龄:'))
                    if not isinstance(age, int):
                        print('年龄必须为整数')
                        continue
                    self.__age = age
                elif i == 5:
                    self.__classes = input('班级:')
    a = p6t4.Student()
    a.InputInfo()
    输入学生信息:
    学号:>? 1901070217
    姓名:>? gzk
    性别(男,女)>? 男
    年龄:>? 15
    班级:>? 2
    <p6t4.Student object at 0x00000211D488A288>
    a.show()
    sno:1901070217
    name:gzk
    sex:男
    age:15
    classes:2
    a.alter()
    选择您要更改的信息:
    1:修改学号
    2:修改姓名
    3:修改性别
    4:修改年龄
    5:修改班级
    0:退出修改
    输入选项:>? 2
    输入姓名:>? 郭zk
    选择您要更改的信息:
    1:修改学号
    2:修改姓名
    3:修改性别
    4:修改年龄
    5:修改班级
    0:退出修改
    输入选项:>? 0
    sno:1901070217
    name:郭zk
    sex:男
    age:15
    classes:2
    

    5、在第4题的基础上定义并实现一个学生数组类StudentArray,支持一批学生信息的处理,能实现以下菜单功能:

    (1)学生信息录入

    (2)学生信息显示(显示所有学生信息)

    (3)学生信息删除(按学号)

    class StudentArray:
        __size = 0
    
        def __init__(self):
            self.__value = []
        def InputInfo(self):
            a = Student()
            a = a.InputInfo()
            if a != None:
                self.__value.append(a)
                print('录入成功')
                StudentArray.__size += 1
    
        def search(self):
            sno = input('请输入查询学号:')
            for i in range(len(self.__value)):
                if sno == self.__value[i].sno:
                    return i
                else:
                    print('不存在此学号的学生')
                    return -1
        def show(self):
            print('所有学生信息为:')
            for a in self.__value:
                a.show()
                print('测试')
    
        def delete(self):
            i = self.search()
            if i != -1:
                del self.__value[i]
                StudentArray.__size -= 1
                print('删除成功')
            else:
                print('删除失败')
    
    def menu():
        print('''
        1.学生信息录入
        2.学生信息显示
        3.学生信息删除
        4.退出系统''')
    
    def main():
        b = StudentArray()
        while True:
            menu()
            n = eval(input('请输入选择:'))
            if n == 1:
                b.InputInfo()
                print()
            elif n == 2:
                b.show()
                print()
            elif n == 3:
                b.delete()
                print()
            elif n ==4:
                print('已经退出系统')
                break
            else:
                print('输入错误,重新输入')
                print()
    
    if __name__ == '__main__':
        main()

     

    展开全文
  • 转载于:https://www.cnblogs.com/xiao-xue-di/p/9372719.html

    转载于:https://www.cnblogs.com/xiao-xue-di/p/9372719.html

    展开全文
  • python面向对象实例 最近整理的一些学习python的基础资料,下面用一个实例来解释面向对象编程,希望对才学习python的朋友有所帮助。题目是开枪打敌人的游戏。具体代码实现如下: #!/usr/bin/python # -*- coding: ...
    python面向对象实例

    最近整理的一些学习python的基础资料,下面用一个实例来解释面向对象编程,希望对才学习python的朋友有所帮助。题目是开枪打敌人的游戏。具体代码实现如下:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*
    """
    @author:li-boss
    @file_name: mianx.py
    @create date: 2019-10-31 22:27 
    @blog https://leezhonglin.github.io
    @csdn https://blog.csdn.net/qq_33196814
    @file_description:
    """
    
    
    class Person(object):
        """创建一个人类"""
    
        def __init__(self, name):
            self._name = name  # 人类绑定名字属性
            self._gun = None
            self._hp = 100
    
        def bulletToClip(self, bullet, clip):
            clip.preseBullet(bullet)
    
        def clipToGun(self, gun, clip):
            gun.preseClip(clip)
    
        def getGun(self, gun):
            self._gun = gun
    
        def __str__(self):
            if self._hp > 0:
    
                if self._gun:
                    return '%s当前血量为:%s,%s' % (self._name, self._hp, self._gun)
                else:
                    return '%s当前血量为:%s,没有枪' % (self._name, self._hp)
    
            else:
                return '%s已死亡' % self._name
    
        def fire(self, enemy):
            self._gun.hurt(enemy)
    
        def injured(self, hurt):
            self._hp -= hurt
    
    
    class Gun(object):
        """创建一个枪类"""
    
        def __init__(self, name):
    
            self._name = name  # 枪类绑定名字属性
            self._clip = None
    
        def preseClip(self, clip):
            self._clip = clip
    
        def __str__(self):
            if self._clip:
                return '%s%s' % (self._name, self._clip)
            else:
                return '%s没有弹夹' % self._name
    
        def hurt(self, enemy):
            """枪从弹夹获取一发子弹"""
            if self._clip:
                bullet_temp = self._clip.toBullet()
                bullet_temp.lethalityToBullet(enemy)
    
            else:
                print('没有弹夹')
    
    
    class Clip(object):
        """创建一个弹夹类"""
    
        def __init__(self, capacity):
            self._capacity = capacity  # 弹夹的容量
            self._listBullet = []
    
        def preseBullet(self, bullet):
            self._listBullet.append(bullet)
    
        @property
        def listBullet(self):
            return self._listBullet
    
        def __str__(self):
            return '当前弹夹信息为:%d/%d' % (len(self._listBullet), self._capacity)
    
        def toBullet(self):
            if self._listBullet:
                return self._listBullet.pop()
            else:
                return None
    
    
    class Bullet(object):
        """创建一个子弹对象"""
    
        def __init__(self, lethailty):
            self._lethality = lethailty  # 子弹的杀伤力
    
        def lethalityToBullet(self, enemy):
            enemy.injured(self._lethality)
    
    
    def main():
        """
        流程控制
        """
        # 创建一个战士
        warrior = Person('战士')
        # 创建一个枪的对象
        ak47 = Gun('AK47')
        # 创建一个弹夹的对象
        clip = Clip(50)
        # 创建一些子弹的对象
        for _ in range(20):
            bullet = Bullet(10)
            # 战士把子弹装进弹夹
            warrior.bulletToClip(bullet, clip)
    
        # 战士把弹夹装进枪
        warrior.clipToGun(ak47, clip)
    
        # 战士拿枪
        warrior.getGun(ak47)
    
        # 创建一个敌人对象
        enemy = Person('敌人')
    
        # 战士开枪打敌人
        for _ in range(len(clip.listBullet)):
            warrior.fire(enemy)
            print(warrior)
            print(enemy)
    
    
    if __name__ == '__main__':
        main()
    
    
    展开全文
  • Python面向对象 整理音乐 Description 请用链表完成下面题目要求。 xiaobai 很喜欢音乐,几年来一直在收集好听的专辑。他有个习惯,每次在听完一首音乐后会给这首音乐打分,而且会隔一段时间给打好分的音乐排一个...

    Python面向对象 整理音乐
    Description

    请用链表完成下面题目要求。
    xiaobai 很喜欢音乐,几年来一直在收集好听的专辑。他有个习惯,每次在听完一首音乐后会给这首音乐打分,而且会隔一段时间给打好分的音乐排一个名次。今天 xiaobai 打开自己的音乐文件夹,发现有很多不同时期打过分的排好序的子音乐文件夹,他想把这些音乐放到一块,组成一个分数有序的序列。由于音乐文件很多,而文件里音乐的数目也是不确定的,怎么帮帮 xiaobai 完成这件工作呢?

    Input
    输入数据第一行为一个整数n(n<1000),代表文件夹的数量。接下来是n个文件夹的信息,每个文件夹信息的第一行是一个数字m(m<=10000),代表这个文件夹里有m首歌,后面m行每行一个歌曲名、分数,之间用空格分开。歌曲名称不超过5个字符。

    Output
    输出一行,为所有音乐组成的一个序列,音乐只输出名字。

    如果音乐分数相同则按照音乐名字典序进行排序。
    在这里插入图片描述
    下面展示一些 内联代码片

    class Music:
        def __init__(self,n,s):
            self.n=n
            self.s=s
        def getS(self):
            return int(self.s)
        def getN(self):
            return self.n
    
    
    
    
    if __name__ == '__main__':
        n = int(input())
        list = []
        for i in range(0,n):
            m = int(input())
            for j in range(0,m):
                 a,b = input().split(' ')
                 mu = Music(a,int(b))
                 list.append(mu)
    
        list.sort(key= lambda x:x.getN())
        list.sort(key=lambda x: x.getS() * -1)
        for i in range(0,len(list)):
            if i == len(list)-1:
                print(list[i].getN(),end='')
            else:
                print(list[i].getN(),end=' ')
    

    本人也是刚学Python的面向对象,看到网上没有这部分相关代码,故把自己代码分享,由于刚刚接触,所以可能代码写的很糟,请各位大佬斧正

    展开全文
  • 面向对象方法实现学生类,学生有姓名、性别和dataStructure,algorithm,Python三门课的成绩, 提供读取这些属性的方法,以及把百分制成绩转换为ABCDE五档成绩,计算平均成绩等方法 个人解答: import types class ...
  • Python面向对象例题

    2020-03-28 10:57:40
    题目:学校成员类(SchoolMember)具有成员的姓名和人数。教师类(Teacher)继承学校成员类,具有工资属性。学生类(Student)继承学校成员类,具有成绩属性。要求:创建教师和学生对象时,总人数加1;对象减少,则...
  • 定义三维向量类 src/step1/step1.py class Vector3d: # 请在这里补充代码,完成本关任务 # ********** Begin *********# def __init__(self,x,y,z): self.__x = x self.__y = y self.__z = z ...
  • 定一个人狗大战 并且用面向对象的组合知识 class Person(object): def __init__(self, name, sex, hp, ad): self.name = name self.sex = sex sel...
  • 往期面试题:【Python面试】谈谈对 Python 和其他语言的区别?​Python常见面试题:说说Python解释器种类以及特点?说说4种常用编码的区别?废话不多说,开始今天的题目:...
  • **#案例题目描述:**1.从案例效果分析有老师和学生2个事物,老师里面有姓名、年龄、性别、工龄几个变量。2.学生里面有姓名、年龄、性别、学号几个变量。3.老师里面有讲课、玩和显示信息的sho...
  • 2018河南科技学院–Python面向对象课程设计 题目要求: 记事本inform.txt中存放若干学生的相关信息,请按照要求编写对应的类(student),将信息从文件中读取出来,要求使用列表存储学生信息,并按照学生分数情况...
  • 面向对象练习题目 题目一 项目需求:电影《我不是药神》上映后,口碑极高,一种名为”格列宁”的进口药为人们所熟知,医药话题也引起了人们热烈的讨论。下面按照要求定义一个药品Medicine类。 Medicine类的属性如下...
  • 201809-3 碰撞的小球 Python面向对象实现 代码已上传GitHub,里面还有更多CCF-CSP题目的Python实现。 题目: 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,...
  • 本篇适合刚学习面向对象的新手,开拓思路。 思路: 先找到对象:左手、右手、♥K、♠A、小明 根据对象抽象出对应的类:人、手、牌 根据需要写出相应的逻辑,很可能反过来完善类的设计 按照题目要求创建相关...
  • 题目要求 首先放上题目要求: 游戏编程:按以下要求定义一个乌龟类和鱼类并尝试编写游戏 假设游戏场景为范围(x,y)为0<=x<=10,0<=y<=10 游戏生成1只乌龟和10条鱼 它们的移动方向均随机 乌龟的最大移动...
  • 题目描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。 输入描述: 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。 输出描述...
  • 面向对象这里我学了几天了,一道坎,感觉有些难,分享一下我的一个作业。需求目前是达到了,但是太啰嗦。 1.使用面向对象思想,写出下列场景: 玩家攻击(攻击力)敌人,敌人(血量)受伤后掉血,还可能死亡(播放...
  • 1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例...
  • 面向对象课后习题出了这个题目,思考以及查资料后许久终于搞定了,哎,老师是在为难我们咩!!! 代码如下: import prettytable as pt # 表格形式显示 import time bank_log = [] # 初始化银行交易日志 class ...
  • 题目 定义Student类,包括name、dob、age、gender和score属性,包括top3方法用来返回学生的最大的3个成绩(可重复)、sanitize方法用来将负的分数变为正的分数,负的分数可能是输入错误。声明stu_list对象组数用于...
  • P6让对象具有能动性 题目:修改P5中定义的类Box,要求其具有:访问私有属性(体积)的方法;添加颜色属性(__color)和设置与获取Box的颜色的方法;添加打开和关闭盒子(Box)的方法,并且限制Box打开(关闭)之后,...
  • 题目:创建一个正方形类,含有边长属性(默认值为5),有求周长和面积的方法,并创建对象进行测试。 #正方形类 class square: a=5#边长 def circle(self): return 4*self.a def area(self): return self.a*self...
  • 题目 1、修改本实例程序,添加让雪人整体移动的功能。 2、修改本程序,添加修改雪人帽子和纽扣颜色的功能
  • 题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 输入描述: 输入一个正浮点数值 输出描述: 输出该数值的近似整数值 示例1 输入 5.5 ...
  • 题目 2、通过定义元类来实现以其作为元类的的类具有主人(onwer)类属性 3、为前面课程中的色子类定义方法实现:色子可以迭代、可比较,可进行加、减运算。 答案 2、 class MyMeta(type): def __init__(self, name...
  • 题目 修改上节课的作业中定义的类: 1、使用属性包装器将私有属性__color包装为color(可读写)属性 2、运用描述符在Box类中创建一个类属性(盒子六面的图案字符,只能为数字1-6) 3、为其定义_call_(),当作为函数...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 175
精华内容 70
关键字:

python面向对象题目

python 订阅