python写用’户登录程序‘的过程2,,上次写的登陆程序杂乱


上次写的登陆程序杂乱无章,自己都看不下去了,老师做出的点评如下

技术分享图片

由于目前字典还不是太熟悉就先不用了,

然后加入了一个while循环确实好用

但是感觉代码仍然是冗余的多,可读性超级差

对了现在发现一个比较有用的调试方法,就是在每个功能完成的时候加入一段print语句来说明这段代码运行了,或者说明一下实现了怎么样的一个功能

上次的那个代码还有一个超级漏洞就是,当某一个用户名锁定了之后,当你再次输入正确的密码的时候仍然会登陆上,

然后这次被我改正了,下面就是代码

user_name=[‘a‘,‘b‘,‘c‘,‘d‘]                      #密码和字符串分别保存到两个列表内并对应位置passward=[‘1‘,‘2‘,‘3‘,‘4‘]error_record=[]while(1):    error_record = []    input_user_name=input("请输入用户名")   #将格式转化为字符串格式    input_passward=input("请输入密码")    if input_user_name in user_name:  # 判断用户名是否存在        user_name_position = user_name.index(input_user_name)  # 获得用户名在列表中的位置        with open(‘error_record.txt‘) as f:  # 打开文件并返回对象            for line in f:  # 对每一行数据进行循环                rs = line.replace(‘\n‘, ‘‘)  # 替换换行符                error_record.append(rs)  # 循环放到列表内        f.close()        print(error_record)        print("用户存在,并写入列表error_record")        if input_user_name in error_record:  # 如果列表里有这个用户名            print("用户存在txt记录中")            user_name_position1 = error_record.index(input_user_name)  # 找到这个用户名的位置            # if error_record[user_name_position1 + 1] == ‘3‘:  # 对应用户名位置判断密码是否正确            #     print("登录失败,账户已经被锁定")            # elif input_passward == passward[user_name_position]:  # 对应用户名位置判断密码是否正确            #            #     print("登陆成功")            if error_record[user_name_position1 + 1] == ‘1‘:                if input_passward == passward[user_name_position]:                    print("登陆成功")                else:                    error_record[user_name_position1 + 1] = ‘2‘  #                    print("登陆失败,还有1次机会")                    print(error_record)                    with open(‘error_record.txt‘, ‘w‘) as f:                        f.truncate()  # 文档清空                    for i in error_record:  # 循环写入文档新列表                        with open(‘error_record.txt‘, ‘a‘) as f:                            f.write(i)                            f.write(‘\n‘)                            f.close()                    print("写入txt记录中2")            elif error_record[user_name_position1 + 1] == ‘2‘:                if input_passward == passward[user_name_position]:  # 对应用户名位置判断密码是否正确                    print("登陆成功")                else:                    print("登陆失败,还有0次机会")                    error_record[user_name_position1 + 1] = ‘3‘  #                    print(error_record)                    with open(‘error_record.txt‘, ‘w‘) as f:                        f.truncate()  # 文档清空                    for i in error_record:  # 循环写入文档新列表                        with open(‘error_record.txt‘, ‘a‘) as f:                            f.write(i)                            f.write(‘\n‘)                            f.close()                    print("写入txt记录中3")            elif error_record[user_name_position1 + 1] == ‘3‘:                print("登录失败,账户已经被锁定")        else:            if input_passward == passward[user_name_position]:  # 对应用户名位置判断密码是否正确                print("登陆成功")            else:                error_record=[]                with open(‘error_record.txt‘) as f:  # 打开文件并返回对象                    for line in f:  # 对每一行数据进行循环                        rs = line.replace(‘\n‘, ‘‘)  # 替换换行符                        error_record.append(rs)  # 循环放到列表内                f.close()                print("把文当中有的数据放到列表中")                print(error_record)                error_record.append(input_user_name)                error_record.append(‘1‘)                print("没有这个用户的错误记录,加入到error_record列表中")                print(error_record)                with open(‘error_record.txt‘, ‘w‘) as f:                    f.truncate()  # 文档清空                for i in error_record:  # 循环写入文档新列表                    with open(‘error_record.txt‘, ‘a‘) as f:                        f.write(i)                        f.write(‘\n‘)                        f.close()                print("密码错误,还有两次机会")    else:        print("请输入正确的用户名")

  代码仍然超级烂,我也是知道的,没事我还会改的,

python写用’户登录程序‘的过程2

评论关闭