小白python登陆接口,可能有很多错,发出来以后自己找找错误

#Author:huaiq
user_dict ={}#初始化一个空字典
user_list =[]#初始化一个空列表,程序可以向里面加入元素login_error_count=0  #用于计数非表内用户名错误次数
#使用while无限循环输入
while True:
    username = input("username:") #输入用户名
    passwd = input("password:")     #输入密码
    users_data = open(r'D:\360Downloads\userpasswd.txt', 'r')  # 登陆用户读取数据文件 userpasswd.txt
        #循环遍历打开的数据
    for user_data in users_data:
        #使用strip除去user_data中的空格并存入user_list
        user_list = user_data.strip()
        #使用split以逗号的形式隔开并重新存入user_datas
        user_datas = user_list.split(',')
        #将user_datas第一个位置的值(用户名)存入user_name
        user_name = user_datas[0].strip()
        #将user_datas第二个位置的值(密码)存入user_passwd
        user_passwd = user_datas[1].strip()
        #将user_datas第三个位置的值(锁定情况)存入user_locked
        user_locked = user_datas[2].strip()
        #将user_datas第四个位置的值(错误次数)存入user_error_count,并将类型转化为强整型
        user_error_count = int(user_datas[3].strip())
        #将前面定义好的变量信息存入字典dict对应的键名中,键名可以随便取
        user_dict[user_name]= {'name': user_name, 'passwd': user_passwd, 'locked': user_locked, 'errcount': user_error_count}
        #关闭打开的userpasswd.txt文件
    users_data.close()
        #匹配输入的用户名是否在字典中已有用户配对
        #keys()函数以列表返回一个字典所有的键。
    if username in user_dict.keys():
        #如果该用户‘locked’键名处值为1则输出锁定
        if user_dict[username]['locked'] == '1':
            print("该用户已被锁定!")
            break
        #如果用户名跟密码和字典中的匹配则成功登陆
        if username==user_dict[username]['name'] and passwd == user_dict[username]['passwd']:
            print("欢迎用户【{name}】的登陆!".format(name=username))
            break
        else:
        #反之则该用户的错误次数+1
         user_dict[username]['errcount'] += 1
            #三次错误输入后锁定
        if user_dict[username]['errcount'] <3:
            print("您的密码错误,您还有{times}次机会输入".format(times=3-user_dict[username]['errcount']))
            #打开userpasswd.txt存入至write_data,追加错误到该文件中
            write_data = open(r'D:\360Downloads\userpasswd.txt','w+')
            #values()用于返回给定字典中可用的所有值的列表存入user_value中
            for user_value in user_dict.values():
                #将user_value中遍历的值保存到列表中并在之后一个数据行换行
                user_list = [user_value['name'],user_value['passwd'],str(user_value['locked']),str(user_value['errcount'])]
                #将user_list数据行中的值以逗号的形式格式化,并且换行
                users_list = ','.join(user_list)
                write_data.write(users_list + '\n')
                #关闭打开的userpasswd.txt
            write_data.close()
        else:
                print("您尝试的次数超过三次,该用户【{name}】将被锁定!".format(name=username))
                #锁定该用户
                user_dict[username]['locked'] = '1'
                #因为该用户已被锁定所以错误次数可清零了
                user_dict[username]['errcount'] = '0'
                #再次打开追加到该文件中
                write_data = open(r'D:\360Downloads\userpasswd.txt','w+')
                #同上
                for user_value in user_dict.values():
                    user_list = [user_value['name'],user_value['passwd'], str(user_value['locked']),str(user_value['errcount'])]
                    users_list = ','.join(user_list)
                    write_data.write(users_list + '\n')
                write_data.close()
                break
    else:
        print('该用户名不存在!你可以尝试三次!你还可以尝试{times}次!'.format(times=2-login_error_count))
        login_error_count+=1
        if login_error_count > 2:
            break

途中遇到很多错误,花了一条参考了一些改好了

1.文件名更改是自己加了后缀导致自己绝对路径都找不到该文件,哈哈

2.文件转义符号直接在前面加个r就行了

3.字典中的[user_name]搞成了输入时的username导致直接退到最后。。。

上一篇:JGUI源码 鼠标中键滚动再次优化


下一篇:Java面试-锁的内存语义,java基础入门第二版电子书