2、Python_Day_1_作业

作业一:编写登陆接口

  1、输入用户名密码

  2、认证成功后显示欢迎信息

  3、输错三次后锁定

分析:

1、流程控制图

2、readme文件

需求:
1、用户登录
2、错误三次锁定
分析:
1、建立user_data.txt文件,含3个字段:name,password,lock(>3表示正常,3=<表示锁定)
2、用json模块把三个字段存成字典dict_data

3、代码

import json

def login(user_data):
    '''
    :param user_data: 用户信息字典
    :return: True 成功, False 不成功
    '''
    name = input("请输入用户名:")
    if user_data.get(name): #用户名存在
        num = user_data[name][1]
        if num >= 3: #用户已被锁定
            print("用户已被锁定!")
            return False
        else: #用户未被锁定
            flag_pass = True
            while flag:
                password = input("请输入密码:")
                if password == user_data[name][0]: #密码正确
                    flag_pass = False
                    return True
                else: #密码错误
                    num += 1
                    if num >= 3: #密码错误3次
                        print("用户已被锁定!")
                        user_data[name][1] = num
                        with open("user_data.txt","w") as f:
                            json.dump(dict_data,f)
                        return False
    else: #用户名不存在
        print("用户名不存在,请重新输入!")
        return False



if __name__ == "__main__":
    dict_data = {}
    flag = True
    with open("user_data.txt", "r") as f:
        dict_data = json.load(f)
    while flag:
        if  login(dict_data):
            flag = False
            print("welcome back!")
import os
import json

if os.path.exists(r'C:UsershuangPycharmProjectsday1sql.txt'):
    #  存储账户密码文件存在
    while True:

        # 用户输入名字和密码并去前后空格
        user_name = input('input name:').strip()
        user_pwd = input('input pwd:').strip()

        # 以读的方式打开文件并把读取到的数据转化为dict对象
        with open('sql.txt', 'r') as f:
            d = json.loads(f.read())

        if d.get(user_name) and d[user_name][1] < 3:
            # 用户名存在并错误次数小于3次(3次锁定)
            if d[user_name][0] == user_pwd:
                # 用户密码正确
                print('welcome back!')
            else:
                # 用户密码不正确,错误次数+1并写入文件
                print('user or pwd is worry!')
                d[user_name][1] += 1
                with open('sql.txt', 'w') as file:
                    df = json.dumps(d)
                    print(df)
                    file.write(df)
        else:
            # 用户名不存在或错误次数大等于3次(3次锁定)
            if d.get(user_name):
                # 用户名存在且错误次数大等于3次(3次锁定)
                print('worry to many!')
            else:
                # 用户名不存在
                print('user_name is not exists!')
else:
    # 存储账户密码文件不存在
    print('soft is error!')
原文地址:https://www.cnblogs.com/jp-mao/p/6246847.html