开发者

Python实现用户名和密码登录

本文实例为大家分享了python实现用户名和密码登录的具体代码,供大家参考,具体内容如下

功能

登录及注册,密码错误多次后验证码确认

说明

初次运行,程序将会自动生成一个名为user的文本文档,是包含用户名及密码的字典

输入用户名,如果用户名不存在,程序会自动以输入的用户名进行注册

输入密码,当输错4次时,程序会生成一个4位验证码,并使用vbs方式弹出,如果验证码输错,程序退出,否则重新执行主循环

代码

from os import system
from sys import exit
from random import randi编程客栈nt
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: 用户名不能为空')
  elhttp://www.cppcns.comse:
   #QulPsV设置密码
   while www.cppcns.comTrue:
    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_n编程客栈ame]=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('登录成功...')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜