Python实现用户名和密码登录
作者:Jason_Xu_STC 发布时间:2022-02-17 13:49:49
标签:python,用户名,密码登录
本文实例为大家分享了Python实现用户名和密码登录的具体代码,供大家参考,具体内容如下
功能
登录及注册,密码错误多次后验证码确认
说明
初次运行,程序将会自动生成一个名为user的文本文档,是包含用户名及密码的字典
输入用户名,如果用户名不存在,程序会自动以输入的用户名进行注册
输入密码,当输错4次时,程序会生成一个4位验证码,并使用vbs方式弹出,如果验证码输错,程序退出,否则重新执行主循环
代码
from os import system
from sys import exit
from random import randint
from time import sleep
user={'root':'88888888'}
error_time=4
mode=False
chack=[None,None]
user_name=''
user_passwd=[None,None]
#读取用户
try:
f=open('user.txt','r')
user=eval(f.read())
f.close()
except:
f=open('user.txt','w')
f.write("{'root':'88888888'}")
f.close
user={'root':'88888888'}
#main
while True:
user_name=str(input('请输入用户名>'))
#判断用户是否存在
if user_name not in user:#用户不存在 -> 注册 -> 设置用户名
print('用户不存在,将执行注册操作。')
if ' ' in user_name:
print('\aErr: 用户名中不能有空格')
elif user_name=='':
print('\aErr: 用户名不能为空')
else:
#设置密码
while True:
user_passwd[0]=str(input('请设置密码>'))
if ' ' in str(user_passwd[0]):
print('\aErr: 密码中不能含有空格。')
elif user_passwd[0]=='':
print('\aErr: 密码不能为空。')
elif len(user_passwd[0])<6:
print('\aErr: 密码长度太短,至少6位。')
else:
#再次输入密码
user_passwd[1]=str(input('请再次输入密码>'))
if user_passwd[0]!=user_passwd[1]:
print('\aErr: 两次输入的密码不一致。')
else:
print('注册成功!\n\n请重新登录:')
user[user_name]=user_passwd[0]
#写入文件
f=open('user.txt','w')
f.write(str(user))
f.close()
break
else: #用户存在 -> 登录 -> 确认密码是否正确
#错4次后验证码确认
while error_time!=0:
user_passwd[0]=input('请输入密码 4/'+str(error_time)+'>')
if user_passwd[0]!=user[user_name]:
print('\aErr: 密码错误')
error_time=error_time-1
else:
mode=True
break
else:
#验证码确认
print('\n\a\a因错误次数过多,进行验证码确认')
chack[0]=str(randint(999,10000)) #生成验证码
#写入到VBS文件,并弹出
f=open('chack.vbs','w')
f.write('msgbox("验证码>'+str(chack[0])+'<")')
f.close()
system('start chack.vbs')
#验证验证码
chack[1]=str(input('请输入验证码>'))
if chack[0]!=chack[1]:
print('\aErr: 验证码错误!')
#倒计时退出
for i in range(3,-1,-1):
print('\b'*23+'程序将在 '+str(i+1)+' 秒后退出...',end='',flush=True)
sleep(1)
exit(0)
else:
error_time=4
if mode==True:
break
input('登录成功...')
来源:https://blog.csdn.net/weixin_45447477/article/details/113376242
0
投稿
猜你喜欢
- 如下所示:#!/usr/bin/env python#-*- coding: utf-8 -*-"""[0,
- 使用场景公司内部使用Django作为后端服务框架的Web服务,当需要使用公司内部搭建的Ldap 或者 Windows 的AD服务器作为Web
- 渲染引擎渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上。默认情况下渲染引擎可以显示HTML,XML文档以及图片。 通过插件(
- 要做好一个HTML邮件,说简单,还真不怎么复杂,说它复杂,其实也不难。-_-!!以前写过类似的[ 关于HTML邮件的总结 ],最近又犯愁,就
- 每个写asp程序人必会的知识!在ASP编程中使用数组数组的定义Dim MyArrayMyArray = Array(1,5,123,12,9
- 【基本介绍】【格式】:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))【说明】:实现将指定字段的字段值转换为列
- 首先还是应该科普下函数参数传递机制,传值和传引用是什么意思?函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进
- 1、pip下载安装1.1 pip下载进入https://pypi.python.org/pypi/pip,下载 .tar.gz压缩包1.2&
- 首先我们解压$ unzip p8202632_10205_LINUX.zip解压后我们会发现多出了个文件夹,他是:Disk1,进入Disk1
- 如下所示:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
- 目录Python里的dict和set的效率有多高?字典中的散列表1.散列值和相等性散列表算法dict的实现及其导致的结果1.键必须死可散列的
- Haar特征哈尔特征使用检测窗口中指定位置的相邻矩形,计算每一个矩形的像素和并取其差值。然后用这些差值来对图像的子区域进行分类。haar特征
- 有什么办法可以列出数据视图吗?有,假设当前数据库为flashdays,则我们可用下列代码列出它的数据视图:pubDatabase
- 在任何编辑器中,获取光标位置都是非常重要的,很多人可能认为较难,其实只要处理好浏览器的兼容,还是比较容易实现的。下面我们一起来看看如何获取到
- 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了。 虽然如此,还是经常有人问我下面的几种写法有什么
- 如何搭建完整的网站架构并设计出一个出色的网站?关于这个问题,我们很难提出一个绝对权威和正确的设计思路,但任何网站的设计都需要遵循一个循序渐进
- package work;import java.io.BufferedReader;import java.io.IOException;
- 介绍 IIRF是一款开源的重写URL过滤器,类似于Apache的URL重写,基于VC8.0(可以用Visual Studio200
- 程序的功能有了个大体的框架,其实可以自己添加一些功能,比如开始的数据库连接 ,可以先设置变量然后通过INIT() 来选择
- 主要作用与拷贝文件用的。1.shutil.copyfileobj(文件1,文件2):将文件1的数据覆盖copy给文件2。import shu