day8&作业

一、实现用户注册功能
思路:
用户输入用户名、密码
将用户输入的内容按照固定的格式,比如:egon:123,存入文件
可以往一个文件中重复注册新的用户名和密码
附加:
1、对输入的用户名进行合法性监测,不能以数字开头,且如果输入的用户名已存在于文件中则要求用户重新输入
2、对输入的密码进行合法性监测,密码的长度至少6位,并且不能包含特殊字符*&$
while 1:
name = input('注册用户名:')
if not name[0].isdigit():
with open('用户名单', mode='rt', encoding='utf-8') as f:
for line in f:
if name == (line.strip().split(':'))[0]:
print('该用户名已被注册')
break
else:
password = input('密码:')
if len(password) > 5:
if '*' not in password and '&'\
not in password and '$' not in password:
confirm_password = input('再次输入密码:')
if password == confirm_password:
print('注册成功!')
with open('用户名单', mode='at', encoding='utf-8') as f:
f.write('%s:%s\n' % (name, password))
break
else:
print('两次输入密码不一致!')
else:
print('密码不能包含特殊字符!')
else:
print('密码长度至少为6位')
else:
print('用户名不能以数字开头!')

二、实现用户验证功能更:
思路:
用户输入账号密码,从文件中读出账号密码,与用户输入的进行比对
附加:新建黑名单文件,同一个账号名输错三次则将用户名写入黑名单文件中,如果用户输入的用户名存在于黑名单中则直接退出
count = 0
flag = 1
while flag:
username = input('请输入用户名:')
with open('黑名单', mode='r', encoding='utf-8') as f:
for line in f:
if username == line.strip():
print('该用户已被锁定')
flag = 0
break
else:
password = input('请输入密码:')
with open('用户名单', mode='r', encoding='utf-8') as f:
for line in f:
if username == line.strip().split(':')[0] and password == line.strip().split(':')[1]:
print('登陆成功!')
flag = 0
break
else:
print('密码错误!')
count += 1
if count == 3:
with open('黑名单', mode='a', encoding='utf-8') as f:
f.write('%s\n' % username)
day8内容:
w:只写模式(不可读;不存在则创建;存在则清空内容)
a:只追加写模式(在文件不存在时会创建空文档,文件存在会将文件指针直接移动到文件末尾)
在w和a模式下,操作文件内容的模式如果为b的话,先编码成二进制再写入文件
.writelines:可以将可迭代的数据类型写入到文件里
.write:可以将字符串数据类型写入到文件里
posted @ 2018-09-20 21:20  endlesswaltz  阅读(80)  评论(0编辑  收藏  举报