python 装饰器模拟京东登陆

2019-02-25 16:14:39来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

要求:

1、三个页面:主页面(home)、书店(book)、金融页面(finance)
2、有两种登陆方式:主页面和书店页面使用京东账户登陆,金融页面使用微信账户登录
2、输入:1 ,进入主页面,以此类推;输入:2 ,进入书店页面;输入:3 ,进入金融页面
3、进入页面时检测有没有登陆,如果没有调用登陆接口,使用账号密码登陆,在任何界面,只需登陆一次即可
4、账户信息保存在文件里
5、在任意界面,输入:Q   ,退出程序

源代码:

login_status = False  # 登录状态

with open('账户信息', 'r') as f_read_self:
    jingdong = f_read_self.readline().strip()
    jingdong = eval(jingdong)   # 内置函数eval()的作用是把一个字符串转换为字典
    for n, m in jingdong.items():
        JD_name = n
        JD_pwd = m

with open('账户信息(微信)', 'r') as f_read_wechat:
    wechat = f_read_wechat.readline().strip()
    wechat = eval(wechat)
    for n, m in wechat.items():
        wechat_name = n
        wechat_pwd = m


def login(auth_type="jingdong"):   # 判断页面类型,默认进去是京东登录页面

    def page(dis_play):
        global login_status    # 声明全局变量

        def login_type():
            global login_status     # 声明全局变量
            if not login_status:    # 如果是未登陆状态
                if auth_type == "jingdong":
                    username = input("Username:")
                    passwd = input("Passwd:")
                    if JD_name == username and JD_pwd == passwd:
                        print("welcome ....")
                        dis_play()   # 登陆成功执行页面函数,显示内容
                        login_status = True  # 改登陆状态为 True
                    else:
                        print("账户或密码错误,请重新输入")
                elif auth_type == "wechat":
                    username = input("Username:")
                    passwd = input("Passwd:")
                    if wechat_name == username and wechat_pwd == passwd:
                        print("welcome ....")
                        dis_play()  # 登陆成功执行页面函数,显示内容
                        login_status = True  # 改登陆状态为 True
                    else:
                        print("账户或密码错误")
            else:
                print("已登陆")
        return login_type   # 返回login_type 的内存地址,用于指向函数对象
    return page


@login()
def home():   # 主页面
    print("welcome to home page")


@login()
def book():  # 书店
    print("welcome to home page")


@login(auth_type="wechat")
def finance():  # 金融
    print("welcome to home page")


while True:
    user_input = input('请输入:\n1: [主页] \n2: [书店] \n3: [金融] \nQ:退出')
    if user_input == '1':
        home()
    elif user_input == '2':
        book()
    elif user_input == '3':
        finance()
    elif user_input == 'Q':
        break
注:文件里的账户信息格式如下,以字典的形式保存

账户信息: {'Tom':'qwe123',}

账户信息(微信): {'Toms':'qwe123',}


原文链接:https://www.cnblogs.com/ss-long/p/10427778.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:django数据库配置及模型创建,激活

下一篇:爬取豆瓣电影