python怎么修改写好的代码,python代码输错怎么修改

文章介绍了如何使用Python编写一个允许用户多次尝试修改密码的命令行登录系统,包括文件操作、用户名和密码管理、黑名单功能以及面向对象编程的应用。
摘要由CSDN通过智能技术生成

大家好,给大家分享一下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和思路
  1. 功能很简单,主要是要从这里体会到面向对象编程的方便性。测试的时候各种奇奇怪怪的非预期输出,函数细化后是很方便调试的用python绘制满天星代码
    心情如图
  2. github
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值