python练习一
- 编写一个登陆接口
- 可以输入用户名密码
- 从本地文件中读取用户名密码
- 认证通过后提示欢迎登陆信息
- 输错三次后提示用户被锁,并将被锁用户名写入被锁用户文本中
# Author:Roach
import sys
name_list = open('user_pass','r+') # 打开本地user_pass用户名密码文本,格式为 用户名:密码
name_text = dict(line.strip().split(":") for line in name_list if line) # 将读取到的用户名密码做成字典,.strip()去掉每行未/n回车符,.split(":")将用户名密码通过:分隔开,{'test': 'test'}通过name_text.get{username}可直接获取用户名的密码
print(name_text)
for i in range(3): # 循环三次,i从0开始循环
username = input("username:") # 输入用户名
password = input("password:") # 输入密码
lock_name = open('locked', 'r+') # 打开锁定用户文件判断用户是否被锁
for j in lock_name.readlines():
if username == j.strip(): # 判断用户是否被锁,去掉行末/n回车符
print("因尝试过多导致{}用户锁定".format(username)) # 输出用户锁定消息
exit(1)
if password == name_text.get(username): # 判断输入密码是否与文本中用户名密码相同
print("Welcome user {name} login...".format(name=username)) # 输出欢迎登陆信息
break
elif i == 2: # 当i=2时以输入三次,将用户名写入被锁用户文本中,并提示用户锁定
lock_name = open('locked','a+') # 打开locked被锁用户文本
lock_name.write(username+'\n') # 写入输入的用户名到文本中,并写入/n回车符
lock_name.close() # 关闭打开的用户文本
print("因尝试过多导致{}用户锁定".format(username)) # 输出用户锁定消息
exit(2)
else:
print('''Invalid username or password!
---------剩余尝试次数:{}---------'''.format(2-i)) # 提示用户还有几次输入机会
执行结果显示
username:test
password:asdf
Invalid username or password!
---------剩余尝试次数:2---------
username:test
password:asdf
Invalid username or password!
---------剩余尝试次数:1---------
username:test
password:test
Welcome user test login...