首页 > 编程语言 > 详细

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

时间:2018-05-17 22:53:09      阅读:32      评论:0      收藏:0      [点我收藏+]

标签:运行   rep   现在   TP   img   UNC   可读性   调试   密码   

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

 

技术分享图片

 

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

然后加入了一个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

标签:运行   rep   现在   TP   img   UNC   可读性   调试   密码   

原文:https://www.cnblogs.com/ldddbk/p/9053712.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号