美文网首页
day15、作业 2019-01-11

day15、作业 2019-01-11

作者: 绝世小丑 | 来源:发表于2019-01-12 10:10 被阅读0次

    1.声明⼀个电脑类: 属性:品牌、颜⾊、内存大小 方法:打游戏、写代码、看视频

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

    class Computer:
        # 声明⼀个电脑类: 属性:品牌、颜⾊、内存大小    方法:打游戏、写代码、看视频
        def __init__(self, brand='阿黄', color='黑', memory='128G'):
            self.brand = brand
            self.color = color
            self.memory = memory
    
      @staticmethod
        def play():
            print('玩游戏')
    
        @staticmethod
        def write():
            print('写代码')
    
        @staticmethod
        def look():
            print('看视频')
    
    
    def main():
        # 创建电脑类的对象:
        p1 = Computer()
        # 通过对象点的方式获取它的属性
        print(p1.brand)
        # 通过对象点的方式修改它的属性
        p1.color = '绿'
        print(p1.color)
        # 通过对象点的方式添加它的属性
        p1.like = 'yes'
        print(p1.like)
        # 通过对象点的方式删除它的属性
        del p1.like
        # print(p1.like)          # 报错。AttributeError: 'Computer' object has no attribute 'like'
    
        p2 = Computer()
        # 通过attr相关方法去获取它的属性
        print(getattr(p2, 'brand'))
        # 通过attr相关方法去修改它的属性
        setattr(p2, 'color', '黄')
        print(p2.color)
        # 通过attr相关方法去添加它的属性
        setattr(p2, 'no_like', 'yes')
        print(p2.no_like)
        # 通过attr相关方法去删除它的属性
        delattr(p2, 'no_like')
        # print(p1.no_like)          # 报错。AttributeError: 'Computer' object has no attribute 'no_like'
    
    
    if __name__ == '__main__':
        main()
    
    

    运行效果:

    阿黄
    绿
    yes
    阿黄
    黄
    yes
    

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

    class Dog:
        # 声明⼀个狗的类,狗的属性:名字、颜色、年龄   狗的方法:叫唤
        def __init__(self, name, color=None, age=None):
            self.name = name
            self.color = color
            self.age = age
    
        def jiao_huan(self):
            print(' %s 开始了叫唤。 ' % self.name)
    
    
    class People:
        # 声明⼀个人的类,人的属性:名字、年龄、狗   人的方法:遛狗
        def __init__(self, name, dog, age=None):
            self.name = name
            self.age = age
            self.dog = dog
    
        def liu_gou(self):
            if self.dog:
                print(' %s 遛出了 %s ' % (self.name, self.dog))
                the_dog = Dog(self.dog)
                the_dog.jiao_huan()
            else:
                print(' %s 没有狗呢' % self.name)
    
    def main():
        # 创建人的对象小明,让他拥有一条狗大黄,然后让小明去遛大黄
        peo1 = People('小明', '大黄')
        peo1.liu_gou()
        peo2 = People('小红')
        peo2.liu_gou()
    
    
    if __name__ == '__main__':
        main()
    
    

    运行效果:

     小明 遛出了 大黄 
     大黄 开始了叫唤。 
     小红 没有狗呢
    

    3.声明一个圆类:

    class Garden:
        # 3.声明一个圆类:
        def __init__(self, r: float):
            self.r = r
    
        def mi_ji(self):
            mian_ji = 3.1415926 * float(self.r) ** 2
            print('这个园的面积为: %f cm^2' % mian_ji)
    
        def zh_chang(self):
            zhou_chang = 3.1415926 * 2 * float(self.r)
            print('这个圆的周长为: %f cm' % zhou_chang)
    
    
    def main():
        # 3.声明一个圆对象:
        g1 = Garden(3)
        g1.mi_ji()
        g1.zh_chang()
    
    
    if __name__ == '__main__':
        main()
    
    

    运行效果:

    这个园的面积为: 28.274333 cm^2
    这个圆的周长为: 18.849556 cm
    

    4.

    创建一个学生类: 属性:姓名,年龄,学号 方法:答到,展示学生信息

    创建一个班级类: 属性:学生,班级名 方法:添加学生,删除学生,点名, 求班上学生的平均年龄

    import json
    
    
    # 4.创建一个学生类:  属性:姓名,年龄,学号   方法:答到,展示学生信息
    # 创建一个班级类:   属性:学生,班级名   方法:添加学生,删除学生,点名, 求班上学生的平均年龄
    
    
    # 创建一个学生类
    class Student:
    
        # 属性:姓名,年龄,学号
        def __init__(self, name, age=None, sno=None):
            self.name = name
            self.age = age
            self.sno = sno
    
        # 方法: 答到。建立成静态方法,因为没有用到对象属性,也不需要类的字段
        @staticmethod
        def da_dao(classes, sname):
            # 导入学生信息
            with open('./files/students.json', encoding='utf-8') as f:
                students = json.load(f)
            all_students = students[classes]
            # 判断有没有这个人
            i = 0
            while i < len(all_students):
                if all_students[i]['sname'] == sname:
                    print(' %s 答:"到"' % all_students[i]['sname'])
                    break
                else:
                    i += 1
            else:
                print('无人答到')
    
        # 方法: 展示学生信息
        def show(self):
            print('这个学生的信息为:\n名字: %s ;年龄: %s ;学号: %s ' % (self.name, self.age, self.sno))
    
    
    class BanJi:
        # 属性: 学生,班级名
        def __init__(self, classes=None, stu=None):
            self.stu = stu
            self.classes = classes
    
        # 方法: 添加学生
        def add_plus(self):
            sname = input('请输入要添加学生的名字:')
            sage = int(input('请输入要添加学生的年龄:'))
            # 自动生成学号;
            with open('./files/sno.txt',encoding='utf-8') as f:
                sno = f.read()
            add_sno = sno.rjust(4, '0')
            new_sno = '16300609' + add_sno
            stu = Student(sname, sage, int(new_sno) + 1)
            new_sno_plus = str(int(sno) + 1)
            with open('./files/sno.txt', 'w', encoding='utf-8') as f:
                f.write(new_sno_plus)
            # 展示学生:
            stu.show()
            classes = self.classes
            # 导入学生信息:
            with open('./files/students.json', encoding='utf-8') as f:
                students = json.load(f)
            all_students = students[classes]
            # 没有这个班就新开一个班:
            if not all_students:
                students[classes] = all_students
                with open('./files/students.json', 'w', encoding='utf-8') as f:
                    json.dump(students, f)
            # 保存学生信息
            list1 = [('sno', sno), ('sname', sname), ('sage', sage)]
            dict1 = dict(list1)
            all_students.append(dict1)
            students[classes] = all_students
            with open('./files/students.json', 'w', encoding='utf-8') as f:
                json.dump(students, f)
            print('添加成功。')
    
        # 方法: 删除学生
        def del_plus(self):
            sname = input('请输入要删除学生的名字:')
            classes = self.classes
            # 导入学生信息
            with open('./files/students.json', encoding='utf-8') as f:
                students = json.load(f)
            all_students = students[classes]
            # 找出学生并删除
            i = 0
            while i < len(all_students):
                if all_students[i]['sname'] == sname:
                    del all_students[i]
                    break
                i += 1
            # 保存学生信息
            students[classes] = all_students
            with open('./files/students.json', 'w', encoding='utf-8') as f:
                json.dump(students, f)
            print('删除成功。')
    
        # 方法: 点名
        def dian_ming(self):
            print('这个班的学生有:')
            # 导入学生信息
            classes = self.classes
            with open('./files/students.json', encoding='utf-8') as f:
                students = json.load(f)
            all_students = students[classes]
            # 展示一个班的学生姓名
            for i in all_students:
                print(i['sname'])
            j = 'y'
            while j == 'y':
                sname = input('请输入名字点名:')
                stu_add = Student(sname)
                stu_add.da_dao(self.classes, sname)
                j = input('输入 y 继续点名(输入其它任何字符结束点名):')
    
        # 方法: 求班上学生的平均年龄
        def age_sum(self):
            classes = self.classes
            # 导入学生信息
            with open('./files/students.json', encoding='utf-8') as f:
                students = json.load(f)
            all_students = students[classes]
            # 求和
            sum1 = 0
            for i in all_students:
                sum1 += i['sage']
            p_j = sum1 / len(all_students)
            print(' %s 这个班的平均年龄为: %.2f ' % (classes, p_j))
    
        # 展示一个班学生的所有信息
        def show_stu(self):
            print('这个班级的所有学生信息为:')
            # 导入学生信息
            classes = self.classes
            with open('./files/students.json', encoding='utf-8') as f:
                students = json.load(f)
            all_students = students[classes]
            # 展示一个班的学生
            for i in all_students:
                print(i)
    
    
    def main():
        # 创建 班级 对象
        class1 = BanJi('class1')
        # 添加学生
        class1.add_plus()
        # 展示一个班学生的所有信息
        class1.show_stu()
        # 点名
        class1.dian_ming()
        # 删除学生
        class1.del_plus()
        # 展示一个班学生的所有信息
        class1.show_stu()
        # 点名
        class1.dian_ming()
        # 求班上学生的平均年龄
        class1.age_sum()
    
    
    if __name__ == '__main__':
        main()
    
    

    运行效果:

    请输入要添加学生的名字:阿黄
    请输入要添加学生的年龄:3
    这个学生的信息为:
    名字: 阿黄 ;年龄: 3 ;学号: 163006090003 
    添加成功。
    这个班级的所有学生信息为:
    {'sno': 163006091001, 'sname': '泷泽萝拉', 'sage': 18}
    {'sno': 163006091002, 'sname': '苍井空', 'sage': 19}
    {'sno': '2', 'sname': '阿黄', 'sage': 3}
    这个班的学生有:
    泷泽萝拉
    苍井空
    阿黄
    请输入名字点名:泷泽萝拉
     泷泽萝拉 答:"到"
    输入 y 继续点名(输入其它任何字符结束点名):y
    请输入名字点名:苍井空
     苍井空 答:"到"
    输入 y 继续点名(输入其它任何字符结束点名):y
    请输入名字点名:阿黄
     阿黄 答:"到"
    输入 y 继续点名(输入其它任何字符结束点名):n
    请输入要删除学生的名字:阿黄
    删除成功。
    这个班级的所有学生信息为:
    {'sno': 163006091001, 'sname': '泷泽萝拉', 'sage': 18}
    {'sno': 163006091002, 'sname': '苍井空', 'sage': 19}
    这个班的学生有:
    泷泽萝拉
    苍井空
    请输入名字点名:阿黄
    无人答到
    输入 y 继续点名(输入其它任何字符结束点名):n
     class1 这个班的平均年龄为: 18.50 
    
    

    相关文章

      网友评论

          本文标题:day15、作业 2019-01-11

          本文链接:https://www.haomeiwen.com/subject/bflfdqtx.html