路飞学城python电子书闲鱼_路飞学城Python-Day21(practise)

'''有bug未及时调整

登出函数有问题'''

importjsonimporttimedefinit_info():

user_if={"egon":{"password":"123",'status':False,'timeout':0},"alex":{"password":"456",'status':False,'timeout':0},

}

with open('user_info','w',encoding='utf-8') as f:

json.dump(user_if,f)defread_info():

with open('user_info','r+',encoding='utf-8') as f:print(json.load(f,encoding = 'utf-8'))

user_name= ''

classUser:defdb(self):'''db方法:调用时打印当前用户信息和信息存储数据格式

:return:'''with open('user_info', 'r+', encoding='utf-8') as f:

user_info= json.load(f, encoding='utf-8')for k, v inuser_info.items():print('username:%s -' %k, type(k),'password:',[val for val in v.values()][0], type([val for val inv.values()][0]),'status:',[val for val in v.values()][1], type([val for val in v.values()][1]),'timeout:', [val for val in v.values()][2], type([val for val in v.values()][2]),

)deflogin(self):'''登录

登录成功将状态(status)修改为True

密码输入错误三次将设置锁定时间(下次登录如果和当前时间比较大于10秒即不允许登录)[个人理解应该是10秒内不能登录,这里的表述有问题]

:return:'''count=0while count < 3:

username= input('请输入用户名>>>').strip()

password= input('请输入密码>>>').strip()

with open('user_info', 'r+', encoding='utf-8') as f:

user_info= json.load(f, encoding='utf-8')

user_name_list=[]for k inuser_info.keys():

user_name_list.append(k)if username in user_name_list and password == user_info.get(username)['password']:if user_info.get(username)['timeout'] - time.time()<0:

user_info.get(username)['status'] =Trueprint('用户:%s 登陆成功' %username)

user_dict={username:user_info.get(username)}

user_name=username

with open('user_info','w+',encoding='utf-8') as f:

json.dump(user_info, f)returnuser_dict[username]else:return '用户账号已锁定!'

elif count == 2:if username inuser_name_list:

user_info.get(username)['timeout'] = time.time()+10with open('user_info','w+',encoding='utf-8') as f:

json.dump(user_info, f)return '%s账户已锁定'%usernameelse:return '用户名不存在!'

else:print('账号或密码错误,还有%s次尝试机会'% (3-(count+1)))

count+= 1

deflogout(self):'''退出将状态修改为False(退出要判断是否处于登录状态)

:return:'''with open('user_info', 'r+', encoding='utf-8') as f:

user_info= json.load(f, encoding='utf-8')

user_list=[]for k inuser_info.keys():

user_list.append(k)if user_name inuser_list:print('当前登录账户%s'%user_name)

choice= input('请确认是否退出,是:Y 否:N').strip()if choice == 'y'.upper() or choice == 'y'.lower():

user_info.get(user_name)['status'] =False

with open('user_info', 'w+', encoding='utf-8') as f:

json.dump(user_info, f)else:pass

else:passus=User()#us.db()

u = us.login()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值