DAY8课下作业

一、实现用户注册功能

思路:
用户输入用户名、密码
将用户输入的内容按照固定的格式,比如:egon:123,存入文件
可以往一个文件中重复注册新的用户名和密码
附加:
1、对输入的用户名进行合法性监测,不能以数字开头,且如果输入的用户名已存在于文件中则要求用户重新输入
2、对输入的密码进行合法性监测,密码的长度至少6位,并且不能包含特殊字符*&$

import string

dig = string.digits
pun = string.punctuation
tag = True
while tag:
while tag:
name = input('请输入您要注册的用户名: ').strip()
if name[0] not in dig:
with open('db1.txt', 'rt', encoding='utf-8')as f:
for keys in f:
if name in keys:
print('用户名已存在,请重试。')
tag = False
break
else:
print('用户名可用。')
break
else:
print('用户名首位不能为数字,请重新输入。')
while True:
pwd = input('请输入您要注册的密码: ').strip()
if len(pwd) > 6:
for items in pwd:
if items in pun:
print('密码不能包含特殊字符,请重试。')
break
else:
print('注册成功。')
break
else:
print('密码长度不能小于6位,请重试。')
with open('db1.txt', mode='at', encoding='utf-8') as f:
info = '%s:%s\n' % (name, pwd)
f.write(info)
choice = input('是否继续注册(Y/N):')
if choice == 'Y':
tag = True
else:
tag = False
print('=' * 100)

 

二、实现用户验证功能更:
思路:
用户输入账号密码,从文件中读出账号密码,与用户输入的进行比对
附加:新建黑名单文件,同一个账号名输错三次则将用户名写入黑名单文件中,如果用户输入的用户名存在于黑名单中则直接退出

import sys
count = 0
while count < 3:
    inp_name = input("请输入用户名:").strip()
    with open("account_lock.txt", "r+", encoding="utf-8") as lock_file:
        for lock_line in lock_file:
            if lock_line == inp_name:
                sys.exit("用户%s已被锁定,请联系管理员" % inp_name)
        with open("db.txt", "rt", encoding="utf-8") as user_file:
            for user_line in user_file:
                (name, pwd) = user_line.strip().split(":")
                if name == inp_name:
                    i = 0
                    while i < 3:
                       password = input("请输入密码:")
                       if pwd == password:
                          sys.exit("恭喜%s登陆成功" % inp_name)
                       else:
                          if i < 2:
                            print("密码错误,请重新输入,你还有%s次机会" % (2 - i))
                       i += 1
                    else:
                       lock_file.write(inp_name + "\n")
                       sys.exit("密码出错次数过多,账号已被锁定")
            else:
                if count<2:
                    print("用户 %s 不存在,请重新输入,还有 %d 次机会" %(inp_name,2-count))
            count+=1
else:
    sys.exit('用户 %s 不存在,退出' % inp_name)

posted @ 2018-09-20 15:48  夜夜夜夜夜i  阅读(135)  评论(0编辑  收藏  举报