python用户名和密码登录函数_基于Python构建用户ID和密码存储查询系统,python,建立,一个,用户名,UserID,Password,的...
大家好,本篇博客目的是建立存储和查询用户名和密码的python系统,基础好的可跳过中间小干货,源码在末尾,喜欢的留下小赞哦!
系统主要功能
主要功能如下:
创建一个新用户及其密码
修改值定用户的密码
显示所有用户
创建一个新的CSV文件存储数据
退出系统
若用户选择1,则应输入需创建的新用户ID。检查用户ID是否已经存在系统中。如果用户已存在,则要求重新选择另一个用户名(User ID)。输入适当的用户名(User ID)后,应要求输入密码。密码满足以下任何一个条件得1分:
至少应包含8个字符;
应包括大写字母;
应包含小写字母;
应该包括数字;和
应至少包含一个特殊字符,例如!, $, %, ^, &, *, (, ), ?, @, #
如果用户输入的密码得分score<=2,则应拒绝并提示它是弱密码;
如果得分为2<=score<=4,请告诉他们“可以改进此密码” ,并询问用户是否想加强密码。
如果score=5,强密码,设置成功。将此用户ID和密码添加到.csv文件中。
如果他们从菜单中选择2,则输入用户ID以及密码,检查是否为系统用户并原密码正确,则允许用户更改密码并保存更改到.csv文件。
如果用户从菜单中选择3,则显示所有用户ID,但不显示密码。
如果用户从菜单中选择4,则新建CSV文件存储数据。
如果用户从菜单中选择5,则停止并退出该程序。
如果用户没有在第一个菜单上选择相关选项,应该显示适当的提示消息。
需提前掌握的知识
如果想要亲手一句代码一句代码完成本项目,需要掌握基本的python语法,如何打开文件、追加、关闭
pandas包
csv包
列表的细节应用
正则表达式
项目相关资料
这里列举一些本人查阅的相关资源,省去大家搜寻资源的时间。
打印功能提示函数
# 打印功能提示
def printMenu():
print("************************")
print("1.创建一个用户ID")
print("2.修改密码")
print("3.显示所有用户")
print("4.创建一个新的CSV文件记录数据")
print("5.退出系统")
print("************************")
创建新用户及密码函数
# 创建用户ID及密码
def CreateUserID():
global NewID
global PassWord
path = "aa.csv" #通过CreateCsvFile()函数提前创建
NewID = input('请输入你想创建的用户名:')
data=pd.read_csv(path,sep=',',encoding='utf-8') #encoding='unicode_escape' 'utf-8' 'GBK'注意区分这几种编码格式
a=data['UserID'].tolist() #将此列转换成列表
while True:
if NewID in a:
print("用户名已存在,请重新选择\n")
NewID = input('请重新输入你想创建的用户名:')
else:
PassWord = ScorePassword()
#a+:追加模式,将新用户名和密码追加到文件末尾
with open(path,'a+',newline="") as f: #使用csv包操作文件,若出现空行,则应加上newline=""参数
csv_write = csv.writer(f)
data_row = [NewID,PassWord]
csv_write.writerow(data_row)
break
利用open操作文件的参数详解,注意实践区别各参数的不同
密码强弱评分函数
#密码评分
def ScorePassword():
yourpassword = input("请你为该用户设置密码:")
strength_level = 0
if len(yourpassword) >= 8: #字符串长度至少为8
strength_level += 1
if len(yourpassword) >= 8:
strength_level += 1
upper = re.compile('[A-Z]+')
match = upper.findall(yourpassword) #findall函数查询参数是否存在大写
if match:
strength_level += 1
lower = re.compile('[a-z]+')
match = lower.findall(yourpassword) #findall函数查询参数是否存在小写
if match:
strength_level += 1
num = re.compile('[0-9]+') #findall函数查询参数是否存在数字
match = num.findall(yourpassword)
if match:
strength_level += 1
else:
print('密码设置失败,至少含有8位')
ScorePassword()
symbol = re.compile('([^a-zA-Z0-9])+') #findall函数查询参数是否存在特殊字符
match = symbol.findall(yourpassword)
if match:
strength_level += 1
else:
strength_level = 0
print('应至少含有一个特殊字符')
ScorePassword()
if strength_level <= 2:
print('密码设置简单,请重试')
ScorePassword() #这里可以采用其它方式,我采用的是递归的方法重试
elif strength_level <=4:
if input('密码中等强度可使用,是否设置更强密码?(Please input Yes or no)\n') != 'Yes':
print("恭喜你设置成功\n")
return yourpassword
else:
ScorePassword(input("请你输入更强的密码:"))
elif strength_level == 5:
print('恭喜你设置成功,完美密码!\n')
return yourpassword
其它密码强弱判断方式
方式众多,但是原理大致相同,我再列举几种,大家可供参考、修改,有疑问可以留言,看到必回。
Python字符串:
str.isnumeric() ------检测字符串是否只有数字 返回True or False(注意是只有数字)
str.isalpha() ------检测字符串中是否只有字母 返回True or False
str.islower() ------检测字符串中是否都为小写
str.isupper() ------检测字符串中是否都为大写
len(str) ------检测字符串长度
fs.isdigit() ------检测字符串是否都为数字。
def checkio(s):
fs = ''.join(filter(str.isalnum, s)) # keep only letters and digits
return (
len(fs) >= 1 # There is at least one letter or digit
and len(s) >= 10 # ... and there are at least 10 characters
and not fs.isalpha() # ... and there is at least one digit
and not fs.isdigit() # ... and there is at least one letter
and not fs.islower() # ... and not all letters are lowercase
and not fs.isupper() # ... and not all letters are uppercase
)
import re
def checkio(data):
return True if re.search("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$", data) and len(data) >= 10 else False
if __name__ == '__main__':
修改值定用户的密码
# 修改用户密码
def ChangeUserPassword():
path = "aa.csv"
YourID = input('请输入你想修改密码的用户名:') #
YourPassword = input('请输入原密码:')
r = csv.reader(open(path,newline=""))
lines = [l for l in r] #将读取的数据转换成列表
# print(lines.index([YourID,YourPassword]))
NewIndes = lines.index([YourID,YourPassword]) #列表查找特定的值
lines[NewIndes][1] = ScorePassword() #列表索引处修改其值
# print(lines)
writer = csv.writer(open(path, 'w',newline="")) #将修改后的数据重新输入进去csv文件
writer.writerows(lines)
显示当前所有用户信息
#显示当前所有用户信息
def SelectAllUserInfo():
path = "aa.csv"
with open(path,"r+",encoding='utf-8') as f:
csv_read = csv.reader(f)
for line in csv_read:
print(line[0])
print("\n")
可运行源码
import csv
import re
import pandas as pd
import numpy as np
from pandas.core.frame import DataFrame
global NewID
global PassWord
# 打印功能提示
def printMenu():
print("************************")
print("1.创建一个用户ID")
print("2.修改密码")
print("3.显示所有用户")
print("4.创建一个新的CSV文件记录数据")
print("5.退出系统")
print("************************")
#打开一个csv文件,若没有则创建,用于存储用户id和密码
def CreateCsvFile():
path = input("请输入新csv文件名——用于记录数据")
with open(path,'w+',newline="") as f:
csv_write = csv.writer(f)
csv_head = ['UserID','PassWord']
csv_write.writerow(csv_head)
# 创建用户ID及密码
def CreateUserID():
global NewID
global PassWord
path = "aa.csv"
NewID = input('请输入你想创建的用户名:')
data=pd.read_csv(path,sep=',',encoding='utf-8') #encoding='unicode_escape' 'utf-8' 'GBK'注意区分这几种编码格式
a=data['UserID'].tolist()
while True:
if NewID in a:
print("用户名已存在,请重新选择\n")
NewID = input('请重新输入你想创建的用户名:')
else:
PassWord = ScorePassword()
with open(path,'a+',newline="") as f:
csv_write = csv.writer(f)
data_row = [NewID,PassWord]
csv_write.writerow(data_row)
break
#密码评分
def ScorePassword():
yourpassword = input("请你为该用户设置密码:")
strength_level = 0
if len(yourpassword) >= 8:
strength_level += 1
if len(yourpassword) >= 8:
strength_level += 1
upper = re.compile('[A-Z]+')
match = upper.findall(yourpassword)
if match:
strength_level += 1
lower = re.compile('[a-z]+')
match = lower.findall(yourpassword)
if match:
strength_level += 1
num = re.compile('[0-9]+')
match = num.findall(yourpassword)
if match:
strength_level += 1
else:
print('密码设置失败,至少含有8位')
ScorePassword()
symbol = re.compile('([^a-zA-Z0-9])+')
match = symbol.findall(yourpassword)
if match:
strength_level += 1
else:
strength_level = 0
print('应至少含有一个特殊字符')
ScorePassword()
if strength_level <= 2:
print('密码设置简单,请重试')
ScorePassword()
elif strength_level <=4:
if input('密码中等强度可使用,是否设置更强密码?(Please input Yes or no)\n') != 'Yes':
print("恭喜你设置成功\n")
return yourpassword
else:
ScorePassword(input("请你输入更强的密码:"))
elif strength_level == 5:
print('恭喜你设置成功,完美密码!\n')
return yourpassword
# 修改用户密码
def ChangeUserPassword():
path = "aa.csv"
YourID = input('请输入你想修改密码的用户名:') #
YourPassword = input('请输入原密码:')
r = csv.reader(open(path,newline=""))
lines = [l for l in r]
# print(lines.index([YourID,YourPassword]))
NewIndes = lines.index([YourID,YourPassword])
lines[NewIndes][1] = ScorePassword()
# print(lines)
writer = csv.writer(open(path, 'w',newline=""))
writer.writerows(lines)
# 显示当前所有用户信息
def SelectAllUserInfo():
path = "aa.csv"
with open(path,"r+",encoding='utf-8') as f:
csv_read = csv.reader(f)
for line in csv_read:
print(line[0])
print("\n")
while True:
printMenu()
key = input("Enter selection:")
print("\n")
if key == '1':
CreateUserID()
elif key == '2':
ChangeUserPassword()
elif key == "3":
SelectAllUserInfo()
elif key == "4":
CreateCsvFile()
elif key == "5":
break
else:
print("请输入1-5选项\n")
系统如何进一步完善
开发GUI,可使用pyqt5或者其它
密码判断函数可以更加简便
记录并显示增加、修改数据的操作时间的功能
增加删除值定用户名的功能
大家加油学习啊!男儿当自强!
python用户名和密码登录函数_基于Python构建用户ID和密码存储查询系统,python,建立,一个,用户名,UserID,Password,的...相关推荐
- mysql存储登录密码_用户身份验证:存储用户ID和密码在一个MySQL数据库
//我们必须永远不会忘记启动会话 session_start(); $errorMessage = ''; if (isset($_POST['txtUserId']) && isse ...
- 实训代码java毕业设计_基于SSM框架的王者荣耀游戏攻略系统
基于SSM框架的王者荣耀游戏攻略系统mysql数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统oracle数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统sqlserver数据库创建语句 基于 ...
- arm linux考勤,定稿毕业论文_基于ARM与Linux的员工刷卡考勤系统喜欢就下吧(范文1)...
<毕业论文_基于ARM与Linux的员工刷卡考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文_基于ARM与Linux的员工刷卡考勤系统(喜欢就下吧)> ...
- mysql存密码_存储用户ID和密码到mysql数据库的方法
对用户身份验证,最常用的方法就是将用户id与密码保存进数据库中了,然后再写一些登录检测代码,就可以使用了. 创建用户信息表: 复制代码 代码如下: CREATE TABLE tbl_auth_user ...
- 基于微信小程序的企业职工薪资查询系统小程序
文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/my ...
- 基于MRS-ClickHouse构建用户画像系统方案介绍
业务场景 用户画像是对用户信息的标签化.用户画像系统通过对收集的各维度数据,进行深度的分析和挖掘,给不同的用户打上不同的标签,从而刻画出客户的全貌.通过用户画像系统,可以对各个用户进行精准定位,从而将 ...
- php保存账号密码到数据库,php中存储用户ID和密码到mysql数据库的方法
创建用户信息表: 复制代码 代码如下: CREATE TABLE tbl_auth_user ( user_id VARCHAR(10) NOT NULL, user_password CHAR(32 ...
- python用户名密码登录退出_用户登录登出
一.功能需求分析 1.登录功能分析 1.1登录流程 1.2功能(一个请求为一个功能) -登录页面 -登录功能 -登出功能 二.登录页面 1.接口设计 1.1.接口说明 类目 说明 请求方式 GET u ...
- python cut函数_基于python cut和qcut的用法及区别详解
我就废话不多说了,直接上代码吧: from pandas import Series,DataFrame import pandas as pd import numpy as np from num ...
最新文章
- winform实现翻书效果_虚拟翻书系统解决方案
- Jquery操作表单Select元素常用方法
- 跳一跳201803-1
- Leetcode--20. 有效的括号
- 安装openCV到VS2010,Win764位机时遇到的问题的解决办法
- 作业四 | 个人项目-小学四则运算 “软件”之初版
- 【软件使用技巧】二(Word文档损坏)
- 记忆模糊知识点5-11
- android 电视安装apk文件损坏,智能电视无法安装APK文件?原因都在这里!
- talfta---动态故障树分析软件产品介绍
- 物联网基础设施安全防护
- centos7输入ifconfg找不到ens33/eth0网卡信息,且service network restart重启网络失败
- java无侵入埋点 point_无侵入埋点
- 菜菜学paddle第六篇:利用LeNet卷积神经网络识别手写数字
- appendChild()方法
- R语言rjags使用随机效应进行臭氧数据分析
- Spring事务不生效的原因
- java 日历工具_【Java】太强了,这款开源日历工具库堪称神器!
- 用C语言编写一个申请内存的程序
- 【阅读论文】第六章--计算机辅助检测--博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病
热门文章
- R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析详解实战:拟合连续性自变量和事件风险之间的关系:基于survival包lung数据
- R读取json文件并转化为dataframe
- Windows下查看已经安装的GPU的情况
- 使用KNN进行缺失值填补详解及实践
- 基于Keras Application和Densenet迁移学习(transfer learning)的乳腺癌图像分类模型(良性、恶性)
- java centos7_centos7.0安装java环境
- 第二章 实验设计的考虑因素
- 下载的TXT小说如何去除广告、去除多余空行?
- 【文本分类】Deep Pyramid Convolutional Neural Networks for Text Categorization
- LeetCode 37. Sudoku Solver--数独求解(回溯法)--Java 3ms,Python 80ms 解法