zoukankan      html  css  js  c++  java
  • 课后练习 第一阶段:Python开发基础 day25 面向对象相关练习

    day 25 作业

    1.组合,多态和多态性,封装 整理出来

    第一阶段:Python开发基础 day25 面向对对象三大特性之多态和封装、组合

    2.统计对象name属性被查看了多少次

    代码如下:

    class Person:  # 定义一个类
        def __init__(self,name):  
            self.__name = name   # 设置一个name 属性用于接收传递过来的name值
            self.count = 0       # 定义一个count属性用于计数
        def get_name(self):
            self.count += 1      # get_name方法被执行一次计数加一
            print(self.__name)   # 打印name属性
            return f'name属性被查看了{self.count}次'
    
    test = Person('foever')     # 实例化一个对象
    for i in range(10):         # 设置一个循环
        print(test.get_name())  # 打印效果
    

    3.统计一下类被实例化了多少次

    class Person:  # 定义一个类
        count = 0  # 定义一个count属性用于计数
        def __init__(self,name):
            self.__name = name   # 设置一个name 属性用于接收传递过来的name值
            Person.count += 1    # 被实例化一次就会计数一次
    
    for i in range(10):            # 设置一个循环
        str = Person('forever')    # 实例化类
    print(Person.count)            #  打印实例化次数
    

    4.通过property写一个计算圆形面积的类中有个area

    import cmath  # 导入cmath 包 这样就可以使用pi
    class Circle:  # 定义一个圆类
        def __init__(self,r):
            self.r = r    # 定义一个半径属性
        @property
        def get_area(self):  # 定义一个获得圆面积的方法
            return cmath.pi * self.r * self.r   # 返回圆的面积
    
    r = int(input('请输入圆的半径:'))    # 接收用户输入进来圆的半径
    circle = Circle(r)                    # 实例化一个圆的对象
    area = circle.get_area                # 获取计算后的圆的面积
    print(f'圆的面积是:{area:.2f}')      # 打印圆面积
    

    5.选课系统的管理员注册,登录功能写完

    文件目录结构:

    settings.py

    import os
    FILE_PATH = os.path.dirname(os.path.dirname(__file__))
    DB_PATH = os.path.join(FILE_PATH,'db')
    

    admin.py

    from interface import admin_interface
    def register():
        print('欢迎来到管理员注册页面')
        username = input('请输入你的用户名:').strip()
        password = input('请输入你要注册账号的密码:').strip()
        msg = admin_interface.reg_interface(username,password)
        print(msg)
    def login():
        print('欢迎来到管理员登陆页面')
        username = input('请输入你的用户名:').strip()
        password = input('请输入你的密码:').strip()
        flag,msg = admin_interface.login_interface(username,password)
        if flag:
            print(msg)
        else:
            print(msg)
    def create_school():
        print('欢迎来到创建校区页面')
    
    def create_teacher():
        print('欢迎来到创建讲师页面')
    
    def create_course():
        print('欢迎来到创建课程页面')
    
    
    func_dic = {
        '1':register ,
        '2':login ,
        '3':create_school,
        '4':create_teacher,
        '5':create_course,
    }
    msg = '''
    1. 管理员注册
    2. 管理员登录
    3. 创建学校
    4. 创建老师
    5. 创建课程
    q. 退出
    '''
    
    def run():
        while True:
            print(msg)
            choice = input('请做出你的选择:')
            if choice == 'q':
                print('已为你退出管理员界面')
                break
            if choice in '1,2,3,4,5':
                func_dic[choice]()
            else:
                print('你的选择有误,请重新选择')
    

    src.py

    from core import admin_view
    def admin():
        print('欢迎来到管理员视图界面')
        admin_view.run()
    
    def teacher():
        print('欢迎来到教师视图界面')
    
    def student():
        print('欢迎来到学生视图界面')
    
    func_dic = {
        '1':admin ,
        '2':teacher ,
        '3':student,
        'q':exit
    }
    
    msg = '''
        1.管理员界面
        2.教师界面
        3.学生界面
        q.退出
    '''
    while True:
        print(msg)
        choice = input('请选择你的操作:')
        if choice in '1,2,3,q':
            func_dic[choice]()
        else:
            print('你的输入有误,请重新输入')
    

    db_handler.py

    from conf import settings
    import os
    import pickle
    
    def save_info(object):   # 定义一个保存信息的类
        file_dir = os.path.join(settings.DB_PATH, object.__class__.__name__.lower())  # 找到注册的那个类
        username = object.username # 传递过来的管理员的用户名
        file_path = os.path.join(file_dir,f'{username}')
        # print(admin_file_path)
        with open(file_path,'wb') as fw:
            pickle.dump(object,fw)
    
    def read_info(username,file_dir):
        file_path = os.path.join(settings.DB_PATH,file_dir,username)
        if not os.path.exists(file_path):
            return False
        with open(file_path, 'rb') as fr:
            data = pickle.load(fr)
        return data
    
    

    model.py

    from db import db_handler
    
    
    class Admin:
        def __init__(self, username, password):
            self.username = username
            self.password = password
            self.save()
        def save(self):
            db_handler.save_info(self)
    
    

    admin_interface.py

    from db import model,db_handler
    def reg_interface(username,password):
        model.Admin(username,password)
        return '恭喜你注册成功'
    
    def login_interface(username,password,file_dir =  'admin'):
        data = db_handler.read_info(username,file_dir)
        if not data :
            return False,'用户名不存在'
        if password == data.password :
            return True,'登陆成功'
        else:
            return False,'密码错误'
    
    

    博客地址

    https://www.cnblogs.com/foreversun92

  • 相关阅读:
    2171 棋盘覆盖
    [网络流24题] 骑士共存
    COGS28 [NOI2006] 最大获利[最大权闭合子图]
    1066: [SCOI2007]蜥蜴
    1877: [SDOI2009]晨跑
    POJ 2125 Destroying the Graph 二分图最小点权覆盖
    LA 3231
    3028: 食物
    PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树
    1597: [Usaco2008 Mar]土地购买
  • 原文地址:https://www.cnblogs.com/foreversun92/p/11426345.html
Copyright © 2011-2022 走看看