700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python如何制作登录密码_python实战系列之模拟用户密码登陆系统(一)

python如何制作登录密码_python实战系列之模拟用户密码登陆系统(一)

时间:2022-11-30 18:21:44

相关推荐

python如何制作登录密码_python实战系列之模拟用户密码登陆系统(一)

1. 前言

最近一直在研究学习python,基于python写一个模拟用户登陆验证的程序,大牛勿喷,欢迎各位同仁指导,学习!该程序使用函数式编程方式,将各个功能模块用函数实现,具体函数说明如下:get_username()从键盘中获取用户的输入,check_user_lock()检查用户名是否被锁定,get_password()从键盘获取密码的输入,check_user_password()检查用户名和密码是否正确,lock_user()用户名和密码输错三次则锁定用户,main()执行函数功能调用和功能检测。

2. 程序内容#!/usr/bin/python

#coding:utf-8

import sys

import getpass

def get_username():

'''

从键盘中获取用户的输入,并对输入做检测,允许Ctrl+C,Ctrl+D退出输入,输入不为空,则返回用户名

'''

try:

while True:

username = raw_input('\033[32mPlease input username:\033[0m')

if username.strip() == '':

continue

else:

break

except Exception as e:

print e

sys.exit(1)

except KeyboardInterrupt:

print ""

sys.exit(1)

return username

def get_password():

'''

从键盘中获取密码的输入,并检测

'''

try:

while True:

password = getpass.getpass('\033[32mPlease input password:\033[0m')

if password.strip() == '':

continue

else:

break

except Exception as e:

print e

sys.exit(1)

except KeyboardInterrupt:

print ""

sys.exit(1)

return password

def check_user_lock(username):

'''

检查用户名是否被锁定,将锁定的用户名存放在userlock.txt文件内,锁定则返回True

'''

lock_flag = False

try:

f = file('userlock.txt','r')

if username in [ user.strip() for user in f.readlines() ]:

lock_flag = True

f.close()

except Exception as e:

print e

sys.exit(1)

return lock_flag

def lock_user(username):

'''

执行用户锁定,写入锁定的文件内,输错密码的次数交由其他地方处理,此处只是执行用户锁定的操作

'''

try:

f = file('userlock.txt','a+')

if username not in [ user.strip() for user in f.readlines() ]:

f.write(username)

f.write("\n")

f.close()

except Exception as e:

print e

sys.exit(1)

def check_user_password(username,password):

'''

检测用户名和密码是否正确,用户名和密码存放在userinfo.txt内,用户名和密码以:号分割,如果匹配正确,则返回True

'''

allow_flag = False

try:

f = file('userinfo.txt','r')

for line in f.readlines():

user,passwd = line.strip().split(":")

if user == username and password == passwd:

allow_flag = True

f.close()

except Exception as e:

print e

sys.exit(1)

return allow_flag

def main():

'''

执行函数功能调用,依次调用get_username(),get_password函数,并调用check_user_password()函数检查用户名和密码是否输入正确,不正确,则有三次输入用户名or密码的机会

'''

retry_time = 0

retry_max_time = 3

while True:

username = get_username()

if check_user_lock(username) is True:

sys.exit('\033[31muser %s has been locked now\033[0m') % (username)

password = get_password()

if check_user_password(username,password) is not True:

retry_time = retry_time + 1

if retry_time < retry_max_time:

print "用户密码输入错误,请重新输入(还剩%d次):" % (retry_max_time - retry_time)

else:

print "超过三次,用户已经被锁定!"

lock_user(username)

sys.exit(-1)

else:

print "\033[33mCongratulation,you have login User System!\033[1m"

break

if __name__ == "__main__":

main()

说明:userinfo.txt文件内,用户密码以:user:password的方式书写,每行一个代表一个用户,userlock.txt则一个用户一行。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。