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:\Users\huang\PycharmProjects\day1\sql.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!')