Python实现用户名和密码登录

 更新时间:2022年02月08日 14:16:23   作者:Jason_Xu_STC  
这篇文章主要为大家详细介绍了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('登录成功...')

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

相关文章

  • 解决AttributeError:'NoneTypeobject' has no attribute'Window'的问题(亲测有效)

    解决AttributeError:'NoneTypeobject' has no attrib

    这篇文章主要介绍了解决AttributeError: ‘NoneType‘ object has no attribute ‘Window‘的问题(亲测有效),本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 基于Python列表解析(列表推导式)

    基于Python列表解析(列表推导式)

    今天小编就为大家分享一篇基于Python列表解析(列表推导式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 关于torch.scatter与torch_scatter库的使用整理

    关于torch.scatter与torch_scatter库的使用整理

    这篇文章主要介绍了关于torch.scatter与torch_scatter库的使用整理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python爬取YY评级分数并保存数据实现过程解析

    Python爬取YY评级分数并保存数据实现过程解析

    这篇文章主要介绍了Python爬取YY评级分数并保存数据实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python入门教程之pycharm安装/基本操作/快捷键

    Python入门教程之pycharm安装/基本操作/快捷键

    这篇文章主要介绍了Python入门教程之pycharm安装/基本操作/快捷键,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • 浅析python redis的连接及相关操作

    浅析python redis的连接及相关操作

    Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。这篇文章主要介绍了python redis的连接及相关操作,需要的朋友可以参考下
    2019-11-11
  • Redis持久化机制实现原理和流程

    Redis持久化机制实现原理和流程

    这篇文章主要介绍了Redis持久化机制实现原理和流程,持久化就是把内存中的数据存放到磁盘中,防止宕机后内存数据丢失,需要的朋友可以参考下
    2023-04-04
  • 使用Python自制一个回收站清理器

    使用Python自制一个回收站清理器

    经常笔记本电脑的回收站存储了很多的文件,需要打开回收站全部选中进行清理。这篇文章将使用Python自制一个回收站清理器,需要的可以参考一下
    2023-03-03
  • pandas groupby + unstack的使用说明

    pandas groupby + unstack的使用说明

    这篇文章主要介绍了pandas groupby + unstack的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python类的动态绑定实现原理

    Python类的动态绑定实现原理

    这篇文章主要介绍了Python类的动态绑定实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论