zoukankan      html  css  js  c++  java
  • Python-面向对象经典习题

    # 一、定义名为MyTime的类,其中应有三个实例变量 时hour 分minute 秒second
    # 1)为了给对象初始化赋值,编写构造方法,对时分秒附初始值
    # 2)为了保证数据的安全性,这三个成员变量应声明为私有、
    # 3)对三个属性分别定义封装get和set方法,定义一个main方法,创建一个MyTime类的对象并调用这六个方法。
    class MyTime:
        def __init__(self,hour,minute,second):
            self.__hour = hour
            self.__minute = minute
            self.__second = second
    
        def get_hour(self):
            return self.__hour
    
        def get_minute(self):
            return self.__minute
    
        def get_second(self):
            return self.__second
    
        def set_hour(self,h):
            self.__hour = h
    
        def set_minite(self,m):
            self.__minute = m
    
        def set_second(self,s):
            self.__second=s
    
    if __name__ == '__main__':
        s = MyTime(3,28,50)
        print(s.get_hour())
        print(s.get_minute())
        print(s.get_second())
        s.set_hour(6)
        print(s.get_hour())
        s.set_second(10)
        print(s.get_second())
        s.set_minite(22)
        print(s.get_minute())
    
    
    
    # 二、为"无名的粉"写一个类WuMingFen,有三个属性 面码:String theMa  粉的分量(两) int quantity  是否带汤 boolean likeSoup
    # 要求:
    # 1)写一个构造方法 分别给三个属性赋值。构造出一个WuMingFen类的对象(酸辣面码、2两、带汤),
    # 2)写一个普通方法check()打印对象的三个属性。通过对象调用此方法。
    class WuMingFen:
        def __init__(self, m: str, q: int, s=bool):
            self.theMa = m
            self.quantity = q
            self.isSoup = s
    
    
        def check(self):
            c = '带汤' if self.isSoup == True else "不带汤"
            print(f"面码:{self.theMa}, 粉的分量:{self.quantity}两,  是否带汤: {c}")
    
    wumingfen = WuMingFen("酸辣面码",2,True)
    
    wumingfen.check()
    
    
    
    #三、摆放家具
    # 需求:
    # 1)房子有户型,总面积和家具名称列表
    # ?? ?新房子没有任何的家具
    # 2)家具有名字和占地面积,其中
    # ?? ?床:占4平米
    # ?? ?衣柜:占2平面
    # ?? ?餐桌:占1.5平米
    # 3)将以上三件家具添加到房子中
    # 4)打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表
    class Home:
        def __init__(self,t,z):
            self.home_type = t
            self.all_spaces = z
            self.free_spaces = z
            self.jiaju_list = []
    
    
        def __str__(self):
            return f"户型:{self.home_type},总面积:{self.all_spaces},剩余面积:{self.free_spaces},家具名称列表:{self.jiaju_list}"
    
        def add_jiaju(self,jiaju2):
            if self.free_spaces < jiaju2.use_area:
                print("%s家具面积太大,无法添加" % (jiaju2.name))
            self.jiaju_list.append(jiaju2.name)
            self.free_spaces -= jiaju2.use_area
    
    
    class Jiaju:
        def __init__(self,name,use_area):
            self.name = name
            self.use_area = use_area
    
        def __str__(self):
            return f"{self.name}家具使用面积为{self.use_area}"
    
    
    bed = Jiaju('bed', 4)
    print(bed)
    closet = Jiaju('closet', 2)
    print(closet)
    desk = Jiaju('desk', 1.5)
    print(desk)
    
    Home = Home("花园洋房",150)
    Home.add_jiaju(bed)
    Home.add_jiaju(closet)
    Home.add_jiaju(desk)
    print(Home)
    
    
    #四、需求:
    #      1)士兵瑞恩有一把AK47
    #      2)士兵可以开火(士兵开火扣动的是扳机)
    #      3)枪 能够 发射子弹(把子弹发射出去)
    #      4)枪 能够 装填子弹 --增加子弹的数量
    class shibin:
        def __init__(self,name,gunobject):
            self.name = name
            self.gun = gunobject
    
        def fire(self):
            if self.gun == []:
                print(f"士兵{self.name}没有枪支")
                return
            print(f"{self.name}快装子弹")
            self.gun.add_zidan(50)
            self.gun.fashe()
    
    class gun:
        def __init__(self, name):
            self.name = name
            self.zidannum = 0
    
        def fashe(self):
            if self.zidannum <=0:
                print(f"{self.name}没有子弹了")
                return
            self.zidannum -=1
            print(f"{self.name}枪支啪啪啪。。。。")
    
        def add_zidan(self, num):
            self.zidannum += num
    
    ak47 = gun(name="ak47")
    ruien = shibin("ruien",ak47)
    ruien.fire()
    
    
    #五、多态:
    #编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
    # 实现思路及关键代码:
    # 1)定义乐器类Instrument,包括makeSound()方法,此方法中乐器声音:"乐器发出美妙的声音!"
    # 2)定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin
    #     二胡Erhu声音:"二胡拉响人生"
    #     钢琴Piano声音:"钢琴美妙无比"
    #     小提琴Violin声音:"小提琴来啦"
    # 3)用main类,多态的方式对不同乐器进行切换
    class Instrument:
        def makeSound(self):
            print("乐器发出美妙的声音")
    
    
    class Erhu(Instrument):
        def makeSound(self):
            print("二胡拉响人生")
    
    class Piano(Instrument):
        def makeSound(self):
            print("钢琴美妙无比")
    
    class Violin(Instrument):
        def makeSound(self):
            print("小提琴来啦")
    
    def music(object):
        object.makeSound()
    
    eh = Erhu()
    po = Piano()
    vl = Violin()
    
    music(vl)
    music(po)
    music(eh)
    
    '''
    封装是面向对象编程的一大特点。
    面向对象编程的第一步:将属性和方法封装到一个抽象的类中,外界使用类创建对象,然后让对象调用方法,对象方法
    的细节都被封装在类的内部
    '''
    
    '''
    需求:小明爱跑步
    1、小明体重75.0公斤;
    2、每次跑步会减肥0.5公斤;
    3、每次吃东西体重会增加1公斤;
    4、小美的体重是45.0公斤;
    '''
    
    class People:
        def __init__(self,name,weight):
            self.name = name
            self.weight = weight
    
        def to_run(self):
            self.weight -= 0.5
    
        def to_eat(self):
            self.weight += 1
    
    xiaoming = People(name="xiaoming",weight=75)
    xiaomei = People(name="xiaomei",weight=45)
    xiaomei.to_eat()
    xiaomei.to_run()
    print(xiaomei.weight)
    三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
  • 相关阅读:
    QT编译时 cc1plus进程占用大量内存卡死问题解决
    python import cv2 出错:cv2.x86_64-linux-gnu.so: undefined symbol
    python ImportError: No module named builtins
    OSError: libcudart.so.7.5: cannot open shared object file: No such file or directory
    二维数组和二级指针(转)
    C/C++中无条件花括号的妙用
    C语言中do...while(0)的妙用(转载)
    卸载 ibus 使Ubuntu16.04任务栏与启动器消失 问题解决
    关于Qt creator 无法使用fcitx输入中文的问题折腾
    QT error: cannot find -lGL
  • 原文地址:https://www.cnblogs.com/deeptester-vv/p/15075526.html
Copyright © 2011-2022 走看看