15python面对对象相关练习

1.声明一个电脑类:

属性:品牌、颜色、内存大小
方法:打游戏、写代码、看视频

a.创建电脑类的对象,然后通过对象点的方式获取、修改、添加和删除它的属性
b.通过attr相关方法去获取、修改、添加和删除它的属性

class Computer:
    def __init__(self, brand, color, m_size):
        self.brand = brand
        self.color = color
        self.m_size = m_size
    def play_game(self):
        print("你可以用我打游戏!")
    def programming(self):
        print("你能用我写代码!")
    def watch_movie(self):
        print("你能用我看电影!")
    def __str__(self):
        return "品牌:%s,颜色:%s,内存大小:%s"%(self.brand, self.color, self.m_size)
if __name__ == '__main__':
    computer1 = Computer("神舟", "黑色", "8GB")
    print(computer1)
    print(getattr(computer1, "brand"))
    computer1.play_game()
    computer1.watch_movie()
    computer1.programming()
    delattr(computer1,"color")
    print(computer1)

运行效果:
品牌:神舟,颜色:黑色,内存大小:8GB
神舟
你可以用我打游戏!
你能用我看电影!
你能用我写代码!
    print(computer1)    #删掉color属性后,因为属性不存在 所以报错
  File "D:/python课后作业/第十五天对象与类/简单作业.py", line 18, in __str__
    return "品牌:%s,颜色:%s,内存大小:%s"%(self.brand, self.color, self.m_size)
AttributeError: 'Computer' object has no attribute 'color'

2.声明一个人的类和狗的类:

狗的属性:名字、颜色、年龄 狗的方法:叫唤
人的属性:名字、年龄、狗 人的方法:遛狗
a.创建人的对象小明,让他拥有一条狗大黄,然后让小明去遛大黄

class Human:
   def __init__(self, name="", age=0, dog=[]):
       self.name = name
       self.age = age
       self.dog = dog
   def walk_the_dog(self):
       print("%s带着%s遛弯"%(self.name, self.dog[0].name))
class Dogs:
   def __init__(self, name="", age=0, colour=""):
       self.name = name
       self.age = age
       self.colour = colour
   def __bark(self):
       print(self.name+"在叫唤")
dog1 = Dogs("大黄", 3,"黄色")   # 构建大黄这个对象
p1 =Human("小明",18 )          #构建小明这个对象
p1.dog.append(dog1)          #让小明拥有大黄
p1.walk_the_dog()              #小明带大黄去遛弯

运行效果:
小明带着大黄遛弯

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

class Class():
    def __init__(self, name="",students=[]):
        self.class_name = name
        self.students = students.copy()  #这里要用.copy 不然创建了另外一个班级,学生会一样
        
    def add_stu(self):
        name = input("请输入学生的姓名:")
        age = input("请输入学生的年龄:")
        stu = Students(name,age)
        self.students.append(stu)
        
    def searh(self):
        print("1.根据学生姓名查找学生")
        print("2.查看所有学生信息")
        n = input("请输入你想要的操作")
        if n == "1":
            name = input("请输入学生的姓名:")
            flag = False
            for stu in self.students:
                if stu.name == name:
                    print(stu)
                    flag = True
            if not flag:
                print("该学生不存在")
        if n == "2":
            for stu in self.students:
                print(stu)
                
    def remove_s(self):
        name = input("请输入要删除学生的名字:")
        flag = False
        remove_list = []
        for stu in self.students[:]:
            if stu.name == name:
                remove_list.append(stu)
                flag = True
        if not flag:
            print("该学生不存在")
        else:
            index = 0
            for stu in remove_list:
                index += 1
                print(index, ":", stu)
            while True:
                try:
                    i = int(input("请输入要删除的学生的序号:"))
                    if i > len(remove_list) or i < 1:
                        print("输入的序号超出范围!")
                    else:
                        break
                except:
                    print("请输入数字!")
            self.students.remove(remove_list[i-1])
            print("删除成功!")

           
class Students():
    def __init__(self, name="", age=0):
        self.name = name
        self.age = age
        
    def __str__(self):
        return "姓名:%s,年龄:%s"%(self.name, self.age)


if __name__ == '__main__':
    class1 = Class("py1805")
    while True:
        print("1.添加学生")
        print("2.查看学生")
        print("3.删除学生")
        print("4.退出")
        n = input("请输入想要的操作:")
        if n == "1":
            class1.add_stu()
        if n == "2":
            class1.searh()
        if n == "3":
            class1.remove_s()
        if n == "4":
            break

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

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,946评论 6 13
  • 迭代器和生成器 生成器:可以看成是一个可以存储多个数据的容器,需要数据的时候生成一个。里面的数据只能从前往后一个一...
    FansYuercero阅读 361评论 0 1
  • 今天要推荐的书,全名叫做《刻意练习:如何从新手到大师》,这是2016年11月机械工业出版社出版的图书。本书由两位作...
    一只大喽勺阅读 720评论 0 0
  • 没有黄叶飘扬,只有寒风刺骨。 没有温馨话语,只有困苦纠缠。 没有秋末丹霜,只有雪花纷纷。 没有刻意求工,只有随心随...
    90d5b261de58阅读 187评论 0 0
  • 预定义常量下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。以下常量表示了 json_l...
    ArleyDu阅读 4,250评论 0 1