本文实例为大家分享了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('登录成功...')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
查看更多关于Python实现用户名和密码登录的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did100282