# 一、注册账号
# 1、用户名存在重新输入。
# 2、用户名只能由字母和数字组成,位数8~16位。
# 3、密码只能由字母和数字组成,位数8~16位。
# 4、输入邀请码。
# 4、输入验证码完成注册。
# 二、登录账号
# 1、账号不存在重新输入。
# 2、账号正确而密码错误错误3次则锁定该账号。
# ================注册环节================
print('超级会员注册'.center(30, '='))
info_cheek = 1
ivt_cheek = 1
while info_cheek:
in_name = input('请输入您用于登录的用户名:').strip()
if not in_name.isalnum():
print('用户名只能由数字及字母组成,请重新输入')
continue
if len(in_name) < 8 or len(in_name) > 16:
print('用户名长度不合规(8到16位),请重新输入')
continue
with open(r'0011 账号密码库.txt', mode='rt', encoding='utf-8')as sql:
for cheek in sql:
if in_name == cheek.strip().split(':')[0]:
print('用户名已存在,请重新输入')
break
else:
info_cheek = 0
while 1:
in_pwd = input('请输入您用于登录的密码:').strip()
if not in_pwd.isalnum():
print('密码只能由数字及字母组成,请重新输入')
continue
elif len(in_pwd) < 8 or len(in_pwd) > 16:
print('密码长度不合规(8到16位),请重新输入')
continue
else:
break
print('用户名和密码可用'.center(30, '='))
while ivt_cheek:
ivt_num = input('请输入邀请码:').strip()
with open(r'0012 邀请码库.txt', mode='rt', encoding='utf-8')as sql:
for cheek in sql:
if ivt_num == cheek.strip():
ivt_cheek = 0
break
else:
print('邀请码不存在,请重新输入')
ident_set = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
ident_num = ''
while 1:
for _ in range(4):
ident_n = ident_set.pop()
ident_num += ident_n
in_ident = input('请输入验证({}):'.format(ident_num)).strip()
if in_ident == ident_num:
break
else:
print('验证码输入错误,请重新输入')
ident_num = ''
print('恭喜您,注册成功,请确认并保管好您的用户名及密码')
print('用户名:{}'.format(in_name))
print('密码:{}'.format(in_pwd))
in_info = in_name + ':' + in_pwd + '\n'
with open(r'0011 账号密码库.txt', mode='at', encoding='utf-8')as sql:
sql.write(in_info)
# ================登录环节================
condi = 1
miss_list = []
while condi:
print('超级会员登录'.center(30, '='))
user_name = input('请输入用户名:')
user_pwd = input('请输入密码:')
with open(r'0013 黑名单.txt', mode='rt', encoding='utf-8')as sql:
for black_cheek in sql:
if user_name == black_cheek.strip():
print('该用户已被锁定,请稍后再试')
condi = 0
break
else:
with open(r'0011 账号密码库.txt', mode='rt', encoding='utf-8')as sql:
for login_c in sql:
login_cheek = login_c.strip().split(':')
if user_name == login_cheek[0] and user_pwd == login_cheek[1]:
print('登录成功')
condi = 0
break
elif user_name == login_cheek[0] and user_pwd != login_cheek[1]:
miss_list.append(user_name)
chance = 3 - miss_list.count(user_name)
if chance > 0:
print('密码错误,请重试,还可以尝试{}次'.format(chance))
break
else:
print('该用户的密码已输错3次,已被锁定')
condi = 0
with open(r'0013 黑名单.txt',mode='at',encoding='utf-8')as sql:
sql.write('{}\n'.format(user_name))
break
else:
print('用户名不存在,请重新输入')