python实战系列之模拟用户密码登陆系统(一)
2015-12-08 17:13
716 查看
1. 前言
最近一直在研究学习python,基于python写一个模拟用户登陆验证的程序,大牛勿喷,欢迎各位同仁指导,学习!该程序使用函数式编程方式,将各个功能模块用函数实现,具体函数说明如下:get_username()从键盘中获取用户的输入,check_user_lock()检查用户名是否被锁定,get_password()从键盘获取密码的输入,check_user_password()检查用户名和密码是否正确,lock_user()用户名和密码输错三次则锁定用户,main()执行函数功能调用和功能检测。
2. 程序内容
本文出自 “Happy实验室” 博客,请务必保留此出处http://happylab.blog.51cto.com/1730296/1720815
最近一直在研究学习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则一个用户一行。
本文出自 “Happy实验室” 博客,请务必保留此出处http://happylab.blog.51cto.com/1730296/1720815
相关文章推荐
- python之路: 基础篇
- [转]用python 10min手写一个简易的实时内存监控系统
- python 学习笔记
- 理解Python中的装饰器
- Python 模版(三)
- Python 模版(二)
- 使用Python编写简单的画图板程序的示例教程
- Python split()函数默认参数
- 【python】使用Python中的urlparse、urllib抓取和解析网页
- python dict list 排序专题
- 14个最受欢迎的Python开源框架综述
- Python读取图片,并保存为矩阵
- Python基础之面向对象(进阶篇)
- 一波神奇的Python语句、函数与方法的使用技巧总结
- python 杂记
- Python3.4 邮件(包含附件与中国)
- Python sqlalchemy 多表查询 没有外键
- 简单总结Python中几种字符串连接的方法
- Python实现二叉树遍历方法(leetcode)
- Python中 os.system()与os.popen()