[python] 老男孩 作业二的解答

import os
import os.path
 
 
 
 
 
# 获取文件内容
def get_file():
    file_path = 'C:/Users/win10/Desktop/user.txt'
    file_name = open(file_path, "r+")
    i = int(0)
    lists = []  # 保存替换过的
    for line in file_name.readlines():
        i = i+1
        # 替换换行符 再切割成数组
        lists.insert(i,line.split(','))
    file_name.close() #关闭文件
    return lists
 
# 重写内容
def write_file(write_list):
    file_path = 'C:/Users/win10/Desktop/user.txt'
    file_write = open(file_path,"w")
    file_write.write(write_list)
    file_write.close()  # 关闭文件
    return
lnet = 0 #下一个数
times = 0
sum = len(get_file())
while lnet < sum:
    k = 0 # 用于计算第几个循环
    lists = get_file()
    content = ''
    username = input('username:')
    password = input('password:')
    status = 0 #状态标记
    for item in lists:
        num = int(item[2].replace('\n',''))
        # break
        if num >=3 and username == item[0]:
            print('该用户已被锁定')
            lnet = sum #退出while
            status = 1
            break
        elif item[0] == username and item[1] == password:
            print('欢迎使用')
            lists[k][2] = lists[k][2].replace('1','0').replace('2','0').replace('3','0')
            for it in lists:
                content += ','.join(it)
            write_file(content)
            status = 1
            lnet = sum  # 退出while
            break
        elif item[0] == username and item[1] != password:
            print('账号或密码错误')
            lists[k][2] = lists[k][2].replace(str(num),str(num+1))
            for it in lists:
                content += ','.join(it)
            write_file(content)
            status = 1
            break
        # elif item[0] != username:
        #     print('账号或密码错误')
 
    if times == 2:
        print('您已输如超过三次错误!请关闭后重新打开')
    elif status == 0:
        print('账号或密码错误')
    times = times + 1
    lnet += 1
    
    
文本格式:
账号 密码 次数
admin,admin,0
adminasdad,adadsad,0
adasda,adasdad,1
 
注:次数是从零开始计算的 用户名不能重复

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值