一.需求分析
用户输入用户名、密码后,根据用户是否已经注册,用户是否在黑名单中,提示用户是否登录成功。
二.任务拆解
1.登录功能
(1)输入用户名
(2)输入密码
(3)登录验证
(3)1用户是否已注册
用户名是否正确
通过判断是否登录成功,是否是黑名单,是否是密码错误,这三种情况都不满足就是属于(用户名是否正确的情况)
(3)2密码是否匹配
密码是否正确
判断用户名是否存在字典(这个字典里面还嵌套了一个字典)里面和和密码是否正确
(3)3黑名单用户禁止登录
用户名是否在黑名单
判断用户名是否存在字典(这个字典里面还嵌套了一个字典)里面和和密码是否正确加上status(最里面的字典的一个键status)的值是否为True
(4)验证次数限制
三次
通过循环来控制,登录成功了,就不用再次登录,直接break跳出循环
登录代码如下
for j in range(3):#设置登录次数
user=input("请输入你的用户名:")
pwd=input("请输入你的密码:")
if user in users and pwd==users[user]['password'] and users[user]['status']==True:
print("登陆成功!")
break
elif user in users and pwd==users[user]['password'] and not users[user]['status']:
print('账号失效,请联系管理员!')
elif user in users and pwd!=users[user]['password']:
print('密码输入错误,请重试!')
else:
print('用户不存在,请先注册!')
三.数据结构设计
1.保存用户名、密码、黑名单
列表
字典
users={
'小红':{'name':'小红','password':'123','status':True},
'mia':{'name':'mia','password':'456','status':True},
'jack':{'name':'jack','password':'789','status':False},
}
字典嵌套字典的形式存储数据,更利于查找信息,减少遍历次数
四.源码
#用户名、密码、黑名单
users={
'小红':{'name':'小红','password':'123','status':True},
'mia':{'name':'mia','password':'456','status':True},
'jack':{'name':'jack','password':'789','status':False},
}
for j in range(3):#设置登录次数
user=input("请输入你的用户名:")
pwd=input("请输入你的密码:")
if user in users and pwd==users[user]['password'] and users[user]['status']==True:
print("登陆成功!")
break
elif user in users and pwd==users[user]['password'] and not users[user]['status']:
print('账号失效,请联系管理员!')
elif user in users and pwd!=users[user]['password']:
print('密码输入错误,请重试!')
else:
print('用户不存在,请先注册!')