Python实现注册登录功能
作者:程序改变世界~ 发布时间:2023-09-07 22:24:50
用Python写个注册登录功能,供大家参考,具体内容如下
本文是用Python写一个注册登录功能,难度不大,很适合练手
主要就是用列表和字典,以及逻辑判断
用到的第3方库模块是time模块,以及re(正则表达式)模块
这里使用time模块就是为了通过sleep方法,让程序运行有进程感,不是一下子蹦出所有信息
使用re模块就是用于判断密码的复杂性,我们注册软件系统判断我们的密码是否足够复杂就是通过正则表达式去判断的
首先第1步就是导入这2个模块,即
import time
import re
之后需要1个列表用于存储注册的id,需要一个字典,来将ID与密码绑定在一起,因为字典是key:value格式,以ID作为key,密码(password)作为value,就实现了绑定
代码可表示为
user_id=[] #存储用户id
user_dict={} #将id与密码绑定
之后就要询问用户是否注册过账号,如果没注册,就提示用户注册账号,可以通过一个变量接收用户的选择,然后进行对应的操作
choice=input('您是否注册过账号 没有请注册 1:注册 2:登录 3:退出系统')
输入1,就进入到注册界面,注册首先需要输入用户名,输入密码,最后提示用户注册成功
然后需要将用户的id加入到user_id中,用字典存储用户的id和密码,即
user_name=input('请输入用户名')
password=input('请输入密码')
user_id.append(user_name)
for item in user_id:
if item not in user_dict:
user_dict[item]=password
print('注册成功!)
注册好就需要登录了,这个过程相比于注册稍稍麻烦些
首先,需要判断用户输入的id是否注册过(也就是输入的id是否在user_id中)
之后,若存在,还需匹配密码正确与否,正确才可登录。
但是,可能用户会忘记密码,虽然我们可以通过字典查看密码并打印给用户,但是一般不建议这么做,尽量建议用户修改密码,以及用户输入了未注册的ID,需要建议用户注册,提高效率。
判断元素是否在列表中只需要i in list即可,若为真,则元素存在于列表中,反之不在
while 1:
name=input('请输入用户名')
key=input('请输入密码')
if name in user_id:
if user_dict[name]==key:
print('登录成功')
break
else:
print('密码错误 请检查好输入')
q=input('您是否选择更改密码 输入y更改 输入其他退出')
if q=='y':
new_password=input('请输入新密码')
user_dict[name]=new_password
print('密码修改成功!')
else:
break
else:
print('用户名不存在 请检查好输入')
r=input('您是否需要注册账号 输入1注册 其他退出')
if r=='1':
user_login=input('请输入要注册的用户名')
password_login=input('请输入您的登录密码')
user_id.append(user_login)
for num in user_id:
if num not in user_dict:
user_dict[user_login]=password_login
print('注册成功')
else:
break
值得注意的是,一定要先判断id是否存在,而不是直接判断密码,因为没注册的id在字典中没有对应的键,会报错误Keyerror
之后就是退出程序了,建议5s缓冲在退出,不至于太突然 可以使用time.sleep()方法
print('感谢您的使用,程序将在5秒后退出')
for i in range(5):
time.sleep(1)
print('程序将在{}秒后退出'.format(5-i))
至此,项目功能就全部完成了,下面是项目的源代码:
上面没有讲正则表达式,源代码中带有正则表达式判断是否含有字母
import time
print('----------感谢您使用本系统------------')
user_id=[]
user_dict={}
time.sleep(1)
while 1:
choice=input('您是否注册过账号 没有请注册 1:注册 2:登录 3:退出系统')
if choice=='1':
user_name=input('请输入用户名')
while 1:
password=input('请输入密码 需要包含字母')
p=re.compile('^.*[A-Z a-z]+.*$')
if p.match(password):
break
else:
print('密码不够复杂 重新输入')
user_id.append(user_name)
for item in user_id:
if item not in user_dict:
user_dict[item]=password
elif choice=='2':
while 1:
name=input('请输入用户名')
key=input('请输入密码')
if name in user_id:
if user_dict[name]==key:
print('登录成功')
break
else:
print('密码错误 请检查好输入')
q=input('您是否选择更改密码 输入y更改 输入其他退出')
if q=='y':
while 1:
new_password1=input('请输入新密码')
new_password2=input('请确认新密码')
if new_password_1==new_password2:
user_dict[name]=new_password1
break
else:
print('两次密码输入不一致,请重新输入')
print('密码修改成功!')
else:
break
else:
print('用户名不存在 请检查好输入')
r=input('您是否需要注册账号 输入1注册 其他退出')
if r=='1':
user_login=input('请输入要注册的用户名')
password_login=input('请输入您的登录密码')
user_id.append(user_login)
for num in user_id:
if num not in user_dict:
user_dict[user_login]=password_login
print('注册成功')
else:
break
else:
print('感谢您的使用,程序将在5秒后退出')
for i in range(1,5):
time.sleep(1)
print('程序将在{}秒后退出'.format(5-i))
break
来源:https://blog.csdn.net/weixin_45939558/article/details/112711843


猜你喜欢
- 首先我很不喜欢验证码这东西。但现在越来越多的网站使用验证码来抵御spam的冲击。太揪心了。背景介绍验证码的技术叫CAPTCHA验证,CAPT
- 具体代码如下所示:<!DOCTYPE html><html> <head> &
- lambda函数用法lambda非常重要的一个定义。lambda在【运行时】才绑定,【不是】在定义的时候绑定。下面这个列子:本意想:让X分别
- jupyter notebook使用matlab以下方法前提是已经安装了matlab程序,如果没有请安装后再执行以下步骤1.MATALB安装
- 首先写一个简单的drf接口from rest_framework.views import APIViewfrom rest_framewo
- 这篇文章主要介绍了JavaScript监听触摸事件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 最近老板叫做一个数据查重的小练习,涉及从一个包含中文字段的文件中提取出其中的中文字段并存储,使用php开发。中间涉及到php正则表达式中文匹
- 数制转换即进制转换,指进制(二、八、十、十六进制)间的相互转换,计算机编程中较为常见。这里列举了python常见数制转换用法。1.进位制度P
- 经过摸索和实践,我把自己的解决方法,写在下面: 说明: 我的Oracle客户端的版本是 oracle 9i, 安装client端的时候,不能
- 在开发中有需求在详情显示里外键字段内容,并且添加按钮弹窗内容,以及按钮跳转内容。以前并没有做过相似的开发,我们的后台是xadmin,当时正在
- 前言图像分割是指根据灰度、色彩、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域。最简单的图像分割就是将物体从背景中分割出来1.图像
- 情况一:列表中的数字是连续数字(从小到大)from itertools import groupbylst = [1, 2, 3, 5, 6
- 随着CSS 框架的流行升温不断,前端er们也越来越关注CSS框架的使用,国内也有很多关于各种CSS框架的使用技巧和教程,彬Go一直关注着各种
- 其实很简单,一般的数组去重可以直接用 new Set() 方法即可,但是数组对象的话,比较复杂,不能直接用,我们可以采取间接的方法来去重un
- 微软在今天早上发布新的安全通告证实,一处远程执行代码漏洞影响到了整个SQL Server产品线。该漏洞的入侵代码在两周前已经被公布在互联网上
- 最近遇到了一个下载静态html报表的需求,需要以提供压缩包的形式完成下载功能,实现的过程中发现相关文档非常杂,故总结一下自己的实现。开发环境
- 在python中有不少对于集合迭代的方法,我们把程序运行后的再一次循环叫做迭代,每一次都循环都可以看做是一次迭代。那么在迭代结束后,我们需要
- 本文实例为大家分享了python实现批处理文件的具体代码,供大家参考,具体内容如下Windows下的bat, linux 下的shell 用
- 1、数据驱动介绍:@ddt.ddt(类装饰器,申明当前类使用ddt框架)@ddt.data(函数装饰器,用于给测试用例传递数据),支持传py
- GitPython 是一个用于操作 Git 版本库的 python 包,它提供了一系列的对象模型(库 - Repo、树 - Tree、提交