day12 面向对象作业

1.声明⼀个电脑类:
属性:品牌、颜⾊、内存⼤⼩
⽅法:打游戏、写代码、看视频
a.创建电脑类的对象,然后通过对象点的⽅式获取、修改、添加和删除它的属性
b.通过attr相关⽅法去获取、修改、添加和删除它的属性

class Computer:
    """电脑类"""

    def __init__(self, brand='asus', color= 'black', memory='4G'):
        self.brand = brand
        self.color = color
        self.memory = memory

    def play_game(self):
        print('van游戏')

    def watch_video(self):
        print('看视频')

    def __str__(self):
        return 'brand:%s color:%s memory:%s' % (self.brand, self.color, self.memory)


if __name__ == '__main__':
    laptop = Computer('asus', 'red_black', '8G')

    setattr(laptop, 'brand', 'acer')
    color = laptop.__getattribute__('color')
    print(color)
    # 添加cpu属性
    laptop.cpu = 'i7_4720HQ'
    print(laptop)
    print('cpu:', laptop.cpu)
    laptop.__delattr__('color')
    # 检测color属性是否被删除
    print(getattr(laptop, 'color', None))

结果:

red_black
brand:acer color:red_black memory:8G
cpu: i7_4720HQ
None

2.声明⼀个⼈的类和狗的类:
狗的属性:名字、颜⾊、年龄 狗的⽅法:叫唤
⼈的属性:名字、年龄、狗 ⼈的⽅法:遛狗
a.创建⼈的对象⼩明,让他拥有⼀条狗⼤⻩,然后让⼩明去遛⼤⻩

class Human:
    """人的类"""

    def __init__(self, name='', age=0, dog=None):
        self.name = name
        self.age = age
        self.dog = dog

    def walk_a_dog(self, dog):
        print('%s正在遛%s' % (self.name, dog.name))


class Dog:
    """狗的类"""

    def __init__(self, name='', color='yellow', age=0):
        self.name = name
        self.color = color
        self.age = age


    def barking(self):
        print('%s:啊汪!' % self.name)


if __name__ == '__main__':
    dog = Dog('tom', 'blue', 2)
    man = Human('jerry', 18, dog)

    man.walk_a_dog(dog)
    dog.barking()

结果:

jerry正在遛tom
tom:啊汪!

3.声明⼀个矩形类:
属性:⻓、宽 ⽅法:计算周⻓和⾯积
a.创建不同的矩形,并且打印其周⻓和⾯积

import random


class Rect:
    """矩形的类"""

    def __init__(self, length=0, width=0):
        self.length = length
        self.width = width

    def perimeter(self):
        perimeter = (self.width + self.length) * 2
        print('周长是:%d' % perimeter)

    def slice(self):
        slice = self.width * self.length
        print('面积是:%d' % slice)


if __name__ == '__main__':
    length = random.randint(1, 10)
    width = random.randint(1, 10)
    rect = Rect(length, width)
    print('长:', length, '宽:', width)

    rect.perimeter()

    rect.slice()

结果:

长: 9 宽: 10
周长是:38
面积是:90

4.创建⼀个学⽣类:
属性:姓名,年龄,学号 ⽅法:答到,展示学⽣信息 创建⼀个班级类:
属性:学⽣,班级名 ⽅法:添加学⽣,删除学⽣,点名

class Class:
    """班级的类"""

    def __init__(self, name='', students=[]):
        self.name = name
        self.students = students

    def student_check(self, name):
        print('老师:%s' % name)
        for index in range(len(self.students)):
            if name == self.students[index].name:
                result = self.students[index].say_yes(name)
                if result:
                    print('%s到了' % name)
                    return True
        else:
            print('······')
            print('%s旷课!' % name)
            return False

    def add_student(self):
        name = input('name:')
        age = int(input('age:'))
        id = input('id:')
        # 根据输入的信息创建学生对象
        stu = Student(name, age, id)
        # 添加学生
        self.students.append(stu)

    def del_student(self, name):
        for index in range(len(self.students)):
            if name == self.students[index].name:
                del self.students[index]
                print('删除成功')
                return
        else:
            print('查无此人')
            return


class Student:
    """学生的类"""

    def __init__(self, name='', age=0, id=''):
        self.name = name
        self.age = age
        self.id = id

    def say_yes(self, name):
        if name == self.name:
            print('%s:到' % name)
            return True
        else:
            return False

    def __str__(self):
        return 'name:%s id:%s age:%d' % (self.name, self.id, self.age)


if __name__ == '__main__':
    student = Student('张三', 20, '9526')
    cls1 = Class('py1085')
    cls1.add_student()
    print(cls1.students[0])

    cls1.student_check('张三')
    cls1.student_check('李四')

结果:

name:李四
age:20
id:9527
name:李四 id:9527 age:20
老师:张三
······
张三旷课!
老师:李四
李四:到
李四到了

5.写⼀个类,封装所有和数学运算相关的功能(包含常⽤功能和常⽤值,例如:pi,e等)

class Arithmetic:
    """数学运算的类"""

   @staticmethod
    def sum(num1, num2):
        return num1 + num2

    @staticmethod
    def subtraction(num1, num2):
        return num1 - num2

    @staticmethod
    def multiplication(num1, num2):
        return num1 * num2

    @staticmethod
    def division(num1, num2):
        return num1/num2


if __name__ == '__main__':
    func = Arithmetic()
    print(func.sum(12, 20))
    print(func.subtraction(20, 12))
    print(func.multiplication(12, 20))
    print(func.division(12, 20))

结果:

32
8
240
0.6

6.1.写⼀个班级类,属性:班级名、学⽣;功能:添加学⽣、删除学⽣、根据姓名查看学⽣信息,展示班级的所有学⽣信息

class Class:
    """班级类"""

    def __init__(self, name=''):
        self.class_name = name
        self.students = []

    def add_student(self):
        while True:
            name = input('name(input 0 to back):')
            if name == '0':
                return
            sex = input('sex:')
            age = int(input('age:'))
            # 根据输入的信息创建学生对象
            stu = Student(name, sex, age)
            # 添加学生
            self.students.append(stu)

    def find_student(self, name):
        for index in range(len(self.students)):
            if name == self.students[index].name:
                return self.students[index]
        else:
            print('查无此人')
            return

    def del_student(self, name):
        for index in range(len(self.students)):
            if name == self.students[index].name:
                del self.students[index]
                print('删除成功')
                return
        else:
            print('查无此人')
            return


class Student:
    """学生类"""

    def __init__(self, name='', sex='', age=0):
        self.name = name
        self.sex = sex
        self.age = age

    def __str__(self):
        return 'name:%s sex:%s age:%d' % (self.name, self.sex, self.age)


if __name__ == '__main__':
    cls1 = Class('py1805')

    while True:
        print('''
        ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        ''')

        cmd = input('>>>>>')
        if not '0' <= cmd <= '4':
            print('输入有误')
            continue
        if cmd == '1':
            cls1.add_student()

        if cmd == '2':
            while True:
                name = input('find student by name(input 0 to back):')
                if name == '0':
                    break
                stu = cls1.find_student(name)
                print(stu)

        if cmd == '3':
            while True:
                name = input('delete student by name(input 0 to back):')
                if name == '0':
                    break
                stu = cls1.del_student(name)

        if cmd == '4':
            for index in range(len(cls1.students)):
                print(cls1.students[index])

        if cmd == '0':
            break

结果:

        ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        
>>>>>1
name(input 0 to back):张三
sex:男
age:20
name(input 0 to back):李四
sex:女
age:21
name(input 0 to back):王五
sex:男
age:23
name(input 0 to back):0

        ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        
>>>>>2
find student by name(input 0 to back):李四
name:李四 sex:女 age:21
find student by name(input 0 to back):0

        ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        
>>>>>
输入有误

        ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        
>>>>>4
name:张三 sex:男 age:20
name:李四 sex:女 age:21
name:王五 sex:男 age:23

        ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        
>>>>>3
delete student by name(input 0 to back):李四
删除成功
delete student by name(input 0 to back):0

        ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        
>>>>>4
name:张三 sex:男 age:20
name:王五 sex:男 age:23

      ++++++++++++++++++++++++++++
        +      simple system       +
        +       1.add student      +
        +       2.find student     +
        +       3.delete student   +
        +       4.find all         +
        +       0.exit             +
        ++++++++++++++++++++++++++++
        
>>>>>0

Process finished with exit code 0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容