python小程序之实现用户的注册登陆验证功能
程序扼要简述:
一、程序流程:
1.程序开始
2.判断本地文件/数据库是否已存在用户信息,存在则跳转到登陆,否则跳转到注册,注册成功后后跳转到登陆
3.判断登陆是否成功,成功则返回成功信息,否则重复尝试登陆3次,最后登录不成功则锁定15秒
4.程序结束
二、程序使用的知识点:
1.本地文件的存储读取
2.对字典的操作
3.if条件判断
4.for/while循环
三、流程思路图:
四、代码详细:
#!/usr/bin/env python # _*_ coding: utf-8 _*_ # author='chenjianwen' ##实现用户的注册登陆验证功能 import getpass import os,sys,time ##红色 def print_red(messages): print('\033[1;35m %s \033[0m' %messages) ##绿色 def print_green(messages): print('\033[1;32m %s \033[0m' %messages) ##定义空字典 userinfo = [] un = [] pas = [] ##判断存储用户信息文件是否存在,不存在则创建 if not os.path.exists('./userinfo.txt'): f = open("./userinfo.txt",mode="w",encoding="UTF-8") f.close() ##读取存储用户信息文件,并把用户信息写入字典 save_userinfo_file = open('./userinfo.txt','r') for line in save_userinfo_file.readlines(): line =line.strip() if not len(line) or line.startswith('#'): continue #print(line) username = line.split(' ')[0] password = line.split(' ')[1] phone_number = line.split(' ')[2] #print('==========================') #print(username,password,phone_number) #userinfo.append({'username':'%s' %username,'password':'%s' %password,'phon_number':'%s' %phone_number}) un.append(username) pas.append(password) #print(userinfo) count = 0 while True: if count < 3: count +=1 select_info = input("你是否有注册过账号了? Please select Y/N:") ##用户注册信息 if select_info == 'N' or select_info == 'n': print("开始注册用户信息:") username = input("Please enter your username:") password = getpass.getpass("Please enter your password:") phone_number = input("Please enter your phon_number:") #userinfo.append({'username':'%s' %username,'password':'%s' %password,'phon_number':'%s' %phone_number}) un.append(username) pas.append(password) #print(userinfo) with open('./userinfo.txt','a') as fw: fw.writelines('\n%s %s %s' %(username,password,phone_number)) #print(userinfo) ##用户登陆验证信息 elif select_info == 'Y' or select_info == 'y': #print(userinfo) print("开始登录验证信息:") username = input("Please enter your username:") password = getpass.getpass("Please enter your password:") if username in un and password in pas: ##【优化1次】用户与密码验证方法有待优化,目前能够用户密码错位登录,只要列表中分别有输入的对应的字段就可以登录 print_green("welcom login {_username}".format(_username=username)) break else: print_red('Check fail...Check again...') print_red("您还有%s次登录机会" % (3 - count)) continue else: print_red("您输入的内容错误! Please enter again...") continue else: print_red("重复登陆多次失败,请15分钟后再尝试登陆...") time.sleep(15) count = 0 continue
五、执行结果