python实现一个注册名密码验证系统 python用户注册验证
转载
一、功能
1、通过Python的交互界面来模拟简单的用户注册和登录,并把注册信息文件化,使用json模式存入到csv文件中.
2、用户名错误3次,账户冻结
3、用户名查重
4、注册时密码,手机号正则匹配
5、修改密码和修改手机号
6、用户信息.csv文件的读取与写入
二、python代码
# -*- coding: utf-8 -*-
# @Time : 2022/12/21 11:00
# @Author : Lenovo
# @Email : qimeiyu@woniuxy.com
# @File : regeist2.py
# @Project : demo
# @脚本说明 :登录注册信息文件化
import csv as cs
import re
'''封装'''
def make_dict(**dic):
return dic
'''读取文件里的账号并存储到userlis里'''
def read_file():
with open('1.csv', 'r') as fp:
global userlis
userlis = []
res = cs.DictReader(fp) # 读出来的数据会组成一个字典,但是有逗号多间隔符
for i in res:
userlis.append(i)
return userlis
'''覆盖写入'''
def write_new_userlis(userlis):
with open('1.csv','w',newline='') as fp:
w=cs.writer(fp)
key = userlis[0].keys() #取出第一行的的键用作表头,列表
w.writerow(key) #把表头写入
for i in userlis:
value = i.values() #取出每一行的值重新写入,列表
w.writerow(value)
'''密码校验——修改密码'''
def chack_pwd(usname,pwd):
for i in range(0, len(userlis)):
if (usname == userlis[i]['usname'] and pwd == userlis[i]['pwd']):
return 1
return 0
'''用户名查重'''
def chack_user_exit(uname):
for i in userlis:
if (uname == i['usname']):
print('用户已经存在!')
return 0
return 1
'''用户名匹配'''
def input_chack_uname(usname):
rule='^[^0-9][0-9A-z].{5,12}'
result = re.match(rule, usname)
if (result and chack_user_exit(usname)): #匹配正则和查重
return usname
else:
print('您的账号不符合要求。')
return 0
'''密码匹配'''
def input_chack_pwd(pwd):
rule='^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{6,15}$'
result = re.match(rule, pwd)
if (result):
return pwd
else:
print('您的密码不符合要求。')
return 0
'''手机号匹配'''
def input_chack_phone(phone):
rule='^1.txt[3-9]\d{9}$'
result=re.match(rule,phone)
if(result):
return phone
else:
print('您的手机号不符合要求')
return 0
'''功能:注册'''
def file_add_user():
with open('1.csv','a',newline='') as fp:
w=cs.writer(fp)
usname=0
count=0
while usname==0: #用户名输入
usname = input('请输入账号:')
usname=input_chack_uname(usname) #用户名输入和检测函数
pwd=0
while pwd==0: #密码输入
pwd = input("请输入密码:")
pwd=input_chack_pwd(pwd) #密码输入和检测函数
phone=0
while phone==0: #电话输入
phone = input("请输入手机号码:")
phone=input_chack_phone(phone) #电话输入和检测函数
w.writerow([usname,pwd,phone]) # 把注册信息追加到文件中
'''功能:登录用户名校验'''
def login_chack_usname():
usname = input("请输入用户名:")
for i in userlis:
if(usname==i['usname'] ):
return usname
print('用户名不存在')
'''功能:密码校验,错误输入三次,禁封用户'''
def login_chack_pwd(usname):
count=0
while count<=3:
pwd = input("请输入密码")
for i in userlis:
if(pwd==i['pwd'] ):
return 1
print('密码错误!')
count+=1
'''三次输错密码,删除userlis列表里的usname'''
print("密码错误超过3三次,封禁此账号!")
for i in range(0,len(userlis)):
if(userlis[i]['usname']==usname):
userlis.pop(i) #遍历找出对应目标删除,之后要break不然会报错
break
write_new_userlis(userlis)
return 0
'''功能:修改密码'''
def chacnge_pwd(usname):
count=0
while count<=3:
pwd=input("请输入旧密码:")
if(chack_pwd(usname,pwd)):
pwd1=input("请输入新密码:")
pwd2=input("请再次确认密码:")
if(pwd1==pwd2 and (input_chack_pwd(pwd2)!=0)):
for i in range(0,len(userlis)):
if (usname == userlis[i]['usname']):
userlis[i]['pwd']=pwd2
print('密码修改成功!')
write_new_userlis(userlis)
break
break
else:
print("密码输入有误!")
else:
print("旧密码出入错误") #修改密码时,旧密码输入错误3次退出循环
count+=1
'''功能:修改电话'''
def change_phone(usname):
cout=0
while cout<=3:
phone=input("请输入您的新电话号码:")
if(input_chack_phone(phone)):
for i in range(0, len(userlis)):
if (usname == userlis[i]['usname']):
userlis[i]['phone'] = phone
print('电话号码修改成功!')
write_new_userlis(userlis)
break
else:
print("手机号格式不正确!")
print("输入错误超过3次,自动退出!")
if __name__ == '__main__':
read_file() #程序开起第一步,把已有的用户信息读出来,主要是全局变量userlis
print('|------------------------主菜单-------------------------|')
print()
print('---------------------登录-----注册---------------------|')
print()
print('|--------------------------------------------------------|')
out=0
while out==0:
begin = input("1登录,2注册,3退出:")
if(begin=="1.txt"):
usname=0
cout=0
while usname==0:
usname=login_chack_usname() #用户名登录和验证
cout+=1
if(cout>3):
print('用户名错误超过三次!')
break
if(login_chack_pwd(usname)): #密码登录和验证以及3此失效删除用户
while out==0:
print('|------------------------用户操作菜单--------------------------|')
print('|---------------------欢迎',usname,'登录-----------------------|')
print('|-----------------------------------------------------------------|')
begin2 = input("1修改密码,2修改电话,3退出:")
if(begin2=="1.txt"):
chacnge_pwd(usname)
elif (begin2 == "2"):
change_phone(usname)
elif (begin2 == "3"):
break
elif(begin=="2"):
file_add_user()
elif(begin=="3"):
break
else:
print("请输入对应的指令!")
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。