标签:put word 练习 字典 class count 针对 程序 blacklist
# -*- coding:utf-8 -*- count = 0 with open(‘password‘,‘r‘,encoding =‘utf-8‘)as p_word: p = p_word.read().split(‘,‘) f = open(‘blacklist‘,‘r+‘,encoding = ‘utf-8‘) with open("username",‘r‘,encoding =‘utf-8‘)as u_name: _f = u_name.read().split(‘,‘) list = (f.read()).split(‘,‘) while count < 3: #输入次数控制在三次以内 count += 1 user_name = input(‘请输入用户名:‘) password = input(‘请输入密码:‘) if user_name in list: #判断用户名是否在黑名单之中 print(‘您在黑名单之中!!‘) exit() else: if user_name not in _f: #判断用户名是否在账号密码列表之中 不在则返回重新输入 print(‘用户名不存在!请重新输入‘) continue else: if password not in p: #判断密码是否在账号密码列表之中 不在则返回重新输入 print(‘密码输入错误 请重新输入‘) continue else: print("登入成功!") exit() print(‘该账号已锁定!请联系管理员将账号解除锁定‘) f.write(‘,‘+ user_name) #将三次错误的 f.close()
这段代码虽然可用 但是加入黑名单的用户名却以第三次输入的用户名为准 所以我将用户名判断放在了循环外 但这样用户失去了错误输入用户名的机会 让程序直接退出了 而且锁定程序针对性从所有用户转变为已注册用户。代码如下:
# -*- coding:utf-8 -*- count = 0 with open(‘password‘,‘r‘,encoding =‘utf-8‘)as p_word: p = p_word.read().split(‘,‘) f = open(‘blacklist‘,‘r+‘,encoding = ‘utf-8‘) with open("username",‘r‘,encoding =‘utf-8‘)as u_name: _f = u_name.read().split(‘,‘) list = (f.read()).split(‘,‘) user_name = input(‘请输入用户名:‘) if user_name in list: #判断用户名是否在黑名单之中 print(‘您在黑名单之中!!‘) else: if user_name not in _f: #判断用户名是否在账号密码列表之中 不在则返回重新输入 print(‘用户名不存在!请输入正确用户名‘) else: while count < 3: #密码输入次数控制在三次以内 count += 1 password = input(‘请输入密码:‘) if password not in p: #判断密码是否在账号密码列表之中 不在则返回重新输入 print(‘密码输入错误 请重新输入‘) continue else: print("登入成功!") exit() print(‘该账号已锁定!请联系管理员将账号解除锁定‘) f.write(‘,‘+ user_name) f.close()
写到这里 发现忘了贴出要求 这里补上:
1.输入用户名和密码成功登入并打印一条成功登入的信息
2.用户三次输入错误 便将用户名添加进黑名单
代码测试之后我发现有一个小问题,已注册的用户名和密码无法一一对应 所以应该用字典来记录用户名和密码会比较好。
标签:put word 练习 字典 class count 针对 程序 blacklist
原文地址:http://www.cnblogs.com/Lowsheep/p/6806188.html