zoukankan      html  css  js  c++  java
  • python练习题之面向对象(三)

    # 1、模拟简单的计算器,要求如下:
    # 定义名为Number的类
    # 其中有两个整型数据成员n1和n2
    # 应声明为私有。编写构造方法:赋予n1和n2初始值
    # 再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法
    # 分别对两个成员变量执行加、减、乘、除的运算。
    # 创建Number类的对象,调用各个方法,并显示计算结果。
    class Number:
    def __init__(self,n1=8,n2=4):
    self.__n1 = n1
    self.__n2 = n2

    def addition(self):
    m1 = self.__n1+self.__n2
    print("n1和n2的和为:%s"%m1)

    def subtration(self):
    m2 = self.__n1 - self.__n2
    print("n1和n2的差:%s" % m2)

    def multiplication(self):
    m3 = self.__n1 * self.__n2
    print("n1和n2的乘积为:%s" % m3)

    def division(self):
    m4 = self.__n1 / self.__n2
    print("n1和n2除为:%s" % m4)

    calculator = Number(8, 19)
    calculator.addition()
    calculator.subtration()
    calculator.multiplication()
    calculator.division()

    # 2、创建一个学生类,属性:姓名,年龄,学号 方法:答到,展示学生信息,类属性:名称
    # 创建一个班级类, 属性:学生,班级名 方法:添加学生,删除学生,点名
    class Student():
    """学生"""
    def __init__(self,name='',age=0,id=''):
    self.name=name
    self.age=age
    self.id=id
    def answer(self):
    print('%s,到'% self.name)
    def show_info(self):
    print('姓名是:%s,年龄:%d,学号是%s'%(self.name,self.age,self.id))
    class Class():
    """班级"""
    def __init__(self,name=''):
    self.name=name
    self.student=[]#里面是学生对象
    self.__num = 0

    def add_student(self):
    name = input('请输入学生的姓名:')
    age = input('请输入学生的年龄:')
    self.__num += 1
    id = 'python' + str(self.__num).rjust(3, '0')
    stu=Student(name,int(age),id)
    self.student.append(stu)

    def del_student(self):
    del_name=input('请输入要删除的学生姓名:')
    a = True
    for student in self.student[:]:
    if del_name==student.name:
    self.student.remove(student)
    print('删除成功!')
    a = False
    if a:
    print('没有该学生')

    def ask_name(self):
    """点名"""
    for student in self.student[:]:
    print(student.name)
    student.answer()

    class1=Class('python1806')
    for i in range(3):
    class1.add_student()
    class1.del_student()
    class1.ask_name()

    # 3、设计一个车类,属性:车的类型、车的速度、
    # 分别再建立两个子类:小汽车类、电动汽车类 去继承车类
    # 为了实现汽车增加能源的方式,在父类中添加 一个增加能源方法 increased_energy() 做出抽象方法
    # 实现小汽车类加 油 电动汽车充电的不同实现
    from abc import ABCMeta,abstractmethod
    class vehicle(metaclass=ABCMeta):
    def __init__(self,mold,speed):
    self.mold = mold
    self.speed =speed
    @abstractmethod
    def increased_energy(self):
    pass

    class car(vehicle):
    def __init__(self,mold,speed):
    vehicle.__init__(self,mold,speed)

    def increased_energy(self):
    print(self.mold+"需要加油,速度才能达到%s"%self.speed)
    car01 = car("小汽车",120)
    car01.increased_energy()

    class ElectricVehicles(vehicle):
    def __init__(self,mold,speed):
    vehicle.__init__(self,mold,speed)

    def increased_energy(self):
    print(self.mold+"需要充电,速度才能达到%s"%self.speed)

    EV01 = ElectricVehicles("新能源汽车",90)
    EV01.increased_energy()

    # 4、设计一个数据类型类 DataType ,包含一个抽象方法 length 方法,
    # 并建立多个子类(Dict、List、String、Tuple)对length 方法进行实现:
    # 如Dict子类 实现length方法功能,输出显示“字典形式的数据,包含3个项”,依次类推
    # 创建一个get_length方法,能实现传入不同的子类对象,输出不同的求长度的结果
    from abc import ABCMeta,abstractmethod
    class DataType(metaclass=ABCMeta): #抽象类DataType
    @abstractmethod
    def length(self): #抽象方法length
    pass

    class Dict(DataType):
    def length(self):
    print('字典形式的数据,包含3个项')

    def get_length(self,object):
    return len(object.keys())

    class List(DataType):
    def length(self):
    print('列表形式的数据,包含3个项')

    def get_length(self,object):
    return len(object)

    class String(DataType):
    def length(self):
    print('字符串形式的数据,包含3个项')
    def get_length(self,object):
    return len(object)

    class Tuple(DataType):
    def length(self):
    print('元组形式的数据,包含3个项')

    def get_length(self,object):
    return len(object)

    dict = Dict()
    dict01= dict.get_length({'id':23,'name':3,'value':2})
    print(dict01)

    dict = List()
    dict01= dict.get_length([23,3,2,99,77])
    print(dict01)

    dict = Tuple()
    dict01= dict.get_length((23,3,2,56,'iji'))
    print(dict01)

    dict = String()
    dict01= dict.get_length('232')
    print(dict01)

    # 5、 写一个传奇游戏中的猪类,类中有属性:颜色、个头、攻击力、准确度。有一个展示猪信息的方法。
    # 再写一个测试类,生成一个猪的对象,将此猪的颜色值为“白色”,个头为5厘米,攻击力为50点血,准确度为0.8。
    # 要求输出此猪的信息格式为:一只白色的猪,个头5厘米,攻击为为50点血,准确度为0.8,我好怕怕呀
    class Pig:
    def __init__(self,color,height,aggressivity,accuracy):
    self.color = color
    self.height = height
    self.aggressivity = aggressivity
    self.accuracy = accuracy

    def show_pig_infos(self):
    print("一只%s的猪,个头为%s厘米,攻击力为%s点血,准确度为%s,我好怕怕呀"%(self.color,self.height,self.aggressivity,self.accuracy))

    if __name__ == '__main__':
    white_pig = Pig("白色",5,50,0.8)
    white_pig.show_pig_infos()

    # 6、 写一个牌的类,类中有属性:花色、值。有一个展示牌信息的方法。
    # 要求写一个测试类,生成一张牌,将此牌的花色设为“梅花”,将此牌的值设为5。
    # 最后显示此牌的信息,要求格式为:梅花5
    class plate:
    def __init__(self,color,value):
    self.color = color
    self.value = value

    def shows(self):
    print(self.color+self.value)

    if __name__ == '__main__':
    pai = plate("梅花","5")
    pai.shows()

    # 7、 写一个猪类,类中的属性:品种,颜色,攻击力。类中有方法:无返回值的方法:
    # (一)猪走路的方法,没有返回值,要求输出格式为“某某品种的某某颜色的猪走来走去”。
    # (二)猪打人的方法,没有返回值,要求输出格式为“某某品种的某某颜色的猪打人了,攻击力为多少”。
    # (三)猪吃饭的方法,没有返回值,要求输出格式为“某某品种的某某颜色的猪吃得真多”。
    # 有返回值的方法:
    # (一)显示自身信息的方法(show_info)。
    # (二)得到此猪品种的方法,要求在此方法中没有输出,返回此猪的品种。
    # (三)得到此猪颜色的方法,要求在此方法中没有输出,返回此猪的颜色。
    class Pig:
    def __init__(self,bread,color,aggressivity):
    self.bread = bread
    self.color = color
    self.aggressivity = aggressivity

    def pig_walk(self):
    print("%s品种的%s颜色的猪走来走去"%(self.bread,self.color))

    def pig_fight(self):
    print("%s品种的%s颜色的猪打人了,攻击力为%s"%(self.bread,self.color,self.aggressivity))

    def pig_eat(self):
    print("%s品种的某某颜色的猪吃得真多"%self.bread)

    def show_info(self):
    return "haha,来了一只%s品中的猪,战斗力为%s"%(self.bread,self.aggressivity)

    def get_bread(self):
    return self.bread

    def get_aggressivity(self):
    return self.aggressivity

    red_pig = Pig("荷兰","red",0.8)
    red_pig.pig_eat()
    red_pig.pig_walk()
    red_pig.pig_fight()
    red_pig.show_info()
    print("这只猪的品种为:"+red_pig.get_bread())
    print("这只猪的战斗力为:",red_pig.get_aggressivity())

    # 8、 写一个汽车的类,类中有属性:品牌,价格,颜色。类中有方法:
    # (一)显示当前汽车对象的所有属性的方法show_info。
    # (二)汽车启动的方法,要求输出“XX品牌的汽车启动了”。
    # (三)汽车加速的方法,要求输出“XX品牌的汽车加速中”。
    # (四)汽车被卖的方法,要求输出“XX品牌的汽车被以XX元的价格卖了”。
    class Automobile:
    def __init__(self,bread,price,color):
    self.bread = bread
    self.price = price
    self.color = color

    def show_info(self):
    print("这辆汽车的品牌为:%s,价格为:%s,颜色为:%s"%(self.bread,self.price,self.color))

    def firing(self):
    print("%s品牌的汽车启动了"%self.bread)

    def speed_up(self):
    print("%s品牌的汽车加速中"%self.bread)

    def be_sold(self):
    print("%s品牌的汽车被以%s元的价格卖了"%(self.bread,self.price))

    Automobile_01 = Automobile("本田",150000,"black")
    Automobile_01.show_info()
    Automobile_01.firing()
    Automobile_01.speed_up()
    Automobile_01.be_sold()
  • 相关阅读:
    04 UUID
    MD5加密算法(信息摘要算法)、Base64算法
    03 MD5加密、Base64处理
    MVC分层思想、SSM编程架构
    1网络编程基本概念
    Tomcat闪退的解决办法
    win10下的jdk1.8安装
    枚举练习
    1000元买物品分配
    win10解决vc++6.0不兼容问题方法
  • 原文地址:https://www.cnblogs.com/tingting-yang/p/14506714.html
Copyright © 2011-2022 走看看