大家好,给大家分享一下python怎么写代码反复修改密码的方法,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
一、模块代码
1. 用户名和密码信息保存在文件中
2. 用户登录时需要输入用户名和密码,认证成功则输出认证成功
3. 如果认证失败则重新认证,最大认证次数不超过三次,超过列入黑名单
1.1 相关设置
#!/usr/bin/python
# -*- coding:utf-8 -*-
import getpass
import os
import sys
type = sys.getfilesystemencoding()
1.2 登陆模块
def _login_():
'''命令行登陆界面'''
_loadFile_()
_getBlack_()
clear()
usernameTemp = raw_input("请输入用户名:")
if _ifusernameExist_(usernameTemp) :
if _ifusernameInblack_(usernameTemp):
print "你都被我拉黑了,还想登陆的吗?"
_login_()
else:
RealInfBox = _getRealInf_(usernameTemp)
else:
print "用户名不存在"
_login_()
passwdTemp = raw_input("请输入密码:")
print RealInfBox
if usernameTemp==RealInfBox[0] and passwdTemp==RealInfBox[1]:
print("第一次就对了")
main(usernameTemp)
else:
for i in range(1,4):
print "第几次错?"
print i
passwdTemp = raw_input("请输入密码:")
if passwdTemp==RealInfBox[1]:
print "密码正确"
main(usernameTemp)
break
else:
i+=1
if i>3:
print "你已被我拉入黑名单"
_putUserintoBlack_(usernameTemp)
clear()
_login_()
break
else:
continue
1.3 清屏
def clear():
print "\n"
print "--------------------这个是清屏--------------------------"
1.4 从本地加载
def _loadFile_():
'''加载用户名和密码文件,并转换成两个list'''
usernameFile = open("username", "r+")
passwdFile = open("password", "r+")
usernameList = usernameFile.readlines()
global usernameList1
usernameList1 = []
for k in usernameList:
k = k.strip('\n')
usernameList1.append(k)
print "用户列表:"
print usernameList1
passList = passwdFile.readlines()
global passList1
passList1 = []
for j in passList:
j = j.strip('\n')
passList1.append(j)
print "密码,便于测试:"
print passList1
1.5 拿到黑名单
def _getBlack_():
global black_file
black_file = open("black", 'r+')
balckList = black_file.readlines()
global balckList1
balckList1 = []
for k in balckList:
k = k.strip('\n')
balckList1.append(k)
print "黑名单:"
print balckList1
1.6 将用户放入黑名单
def _putUserintoBlack_(usernameTemp):
black_file.write(usernameTemp)
black_file.write('\n')
1.7 主界面
def main(usernameTemp):
'''主界面'''
clear()
print "hello,"+usernameTemp
print "这个是主界面了,你想完成什么操作?"
print "0.退出 1.查看用户列表 2.查看黑名单"
actionNum=input("请输入你要进行的操作:\n")
if int(actionNum)==1:
clear()
print "用户列表:"
print usernameList1
main(usernameTemp)
elif int(actionNum)==2:
clear()
print "黑名单:"
print balckList1
main(usernameTemp)
elif int(actionNum)==0:
_login_()
else:
clear()
print "输入错误,请重新输入:"
main(usernameTemp)
1.8 从服务端拿到相应账户的账号密码用于验证
def _getRealInf_(usernameTemp):
'''用户输入了正确用户名之后,服务端拿到正确的账号和密码,用于后面的判断'''
for lines in usernameList1:
if lines==usernameTemp:
for pslines in passList1:
global realInfo
realInfo = pslines.split(":")
if usernameTemp==realInfo[0]:
#print realInfo[0] + "and" + realInfo[1]
break
return [realInfo[0],realInfo[1]]
1.9 判断用户名是否存在
def _ifusernameExist_(usernameTemp):
'''判断用户名是否存在'''
for lines in usernameList1:
if usernameTemp == lines:
return True
return False
1.10判断用户名是否在黑名单中
def _ifusernameInblack_(usernameTemp):
'''判断用户是否在黑名单中'''
for lines in balckList1:
if usernameTemp == lines:
return True
return False
二、代码全文
#!/usr/bin/python
# -*- coding:utf-8 -*-
import getpass
import os
import sys
type = sys.getfilesystemencoding()
def clear():
print "\n"
print "--------------------这个是清屏--------------------------"
def _loadFile_():
'''加载用户名和密码文件,并转换成两个list'''
usernameFile = open("username", "r+")
passwdFile = open("password", "r+")
usernameList = usernameFile.readlines()
global usernameList1
usernameList1 = []
for k in usernameList:
k = k.strip('\n')
usernameList1.append(k)
print "用户列表:"
print usernameList1
passList = passwdFile.readlines()
global passList1
passList1 = []
for j in passList:
j = j.strip('\n')
passList1.append(j)
print "密码,便于测试:"
print passList1
def _getBlack_():
global black_file
black_file = open("black", 'r+')
balckList = black_file.readlines()
global balckList1
balckList1 = []
for k in balckList:
k = k.strip('\n')
balckList1.append(k)
print "黑名单:"
print balckList1
def _putUserintoBlack_(usernameTemp):
black_file.write(usernameTemp)
black_file.write('\n')
def main(usernameTemp):
'''主界面'''
clear()
print "hello,"+usernameTemp
print "这个是主界面了,你想完成什么操作?"
print "0.退出 1.查看用户列表 2.查看黑名单"
actionNum=input("请输入你要进行的操作:\n")
if int(actionNum)==1:
clear()
print "用户列表:"
print usernameList1
main(usernameTemp)
elif int(actionNum)==2:
clear()
print "黑名单:"
print balckList1
main(usernameTemp)
elif int(actionNum)==0:
_login_()
else:
clear()
print "输入错误,请重新输入:"
main(usernameTemp)
def _getRealInf_(usernameTemp):
'''用户输入了正确用户名之后,服务端拿到正确的账号和密码,用于后面的判断'''
for lines in usernameList1:
if lines==usernameTemp:
for pslines in passList1:
global realInfo
realInfo = pslines.split(":")
if usernameTemp==realInfo[0]:
#print realInfo[0] + "and" + realInfo[1]
break
return [realInfo[0],realInfo[1]]
def _ifusernameExist_(usernameTemp):
'''判断用户名是否存在'''
for lines in usernameList1:
if usernameTemp == lines:
return True
return False
def _ifusernameInblack_(usernameTemp):
'''判断用户是否在黑名单中'''
for lines in balckList1:
if usernameTemp == lines:
return True
return False
def _login_():
'''命令行登陆界面'''
_loadFile_()
_getBlack_()
clear()
usernameTemp = raw_input("请输入用户名:")
if _ifusernameExist_(usernameTemp) :
if _ifusernameInblack_(usernameTemp):
print "你都被我拉黑了,还想登陆的吗?"
_login_()
else:
RealInfBox = _getRealInf_(usernameTemp)
else:
print "用户名不存在"
_login_()
passwdTemp = raw_input("请输入密码:")
print RealInfBox
if usernameTemp==RealInfBox[0] and passwdTemp==RealInfBox[1]:
print("第一次就对了")
main(usernameTemp)
else:
for i in range(1,4):
print "第几次错?"
print i
passwdTemp = raw_input("请输入密码:")
if passwdTemp==RealInfBox[1]:
print "密码正确"
main(usernameTemp)
break
else:
i+=1
if i>3:
print "你已被我拉入黑名单"
_putUserintoBlack_(usernameTemp)
clear()
_login_()
break
else:
continue
_login_()
三、测试用例
3.1 用户名文件 username
hello
hello1
3.2 用户名和密码文件 password
hello:password1
hello1:password2
laowang:password3
laoli:password4
laichen:password5
3.1 黑名单文件 black
hello
hello1
laowang
laoli
laichen
四、github和思路
- 功能很简单,主要是要从这里体会到面向对象编程的方便性。测试的时候各种奇奇怪怪的非预期输出,函数细化后是很方便调试的用python绘制满天星代码。
- github