美文网首页
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 

相关文章

  • 2019-01-11 day15作业

    import wm_file_manager 1.声明一个电脑类: 属性:品牌、颜色、内存大小 方法:打游戏、写...

  • 2019-01-11 day15 作业

    1.声明一个电脑类: 属性:品牌、颜色、内存大小 方法:打游戏、写代码、看视频 a.创建电脑类的对象,然后通过对象...

  • day15、作业 2019-01-11

    1.声明⼀个电脑类: 属性:品牌、颜⾊、内存大小 方法:打游戏、写代码、看视频 a.创建电脑类的对象,然后通过对象...

  • 2019-01-11

    2019-01-11 平常人15564010639拒 字数 41 · 阅读 6 2019-01-11 17:19 ...

  • Ubuntu安装notepadqq三步走

    2019-01-11

  • 如何高效做作业

    2019-01-11 如何高效做作业 最近,女儿完成作业越来越晚,一直要整到差不多十一点。诚然,到期末了,老师布置...

  • Day15中国古典作品鉴赏

    DAY15 课程学习:《Day15:中国古典作品鉴赏,将文心注入写作大脑》 今日作业: 鉴赏一首古诗词,随意地写,...

  • 2019-01-11

    2019-01-11 周五 晴 ...

  • 如何让自己的文章脱颖而出

    205~云心般若~Day15作业7 作业内容 小作业7(简书) 篇幅100-200字左右 模仿自己喜欢的某位作者的...

  • 【3班1组】Day15 掌握这几招,让你的文章脱颖而出

    【3班1组】Day15 掌握这几招,让你的文章脱颖而出 【学员信息】:103-Samuel-小作业7 【作业要求】...

网友评论

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

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