💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
>[info] 本练习,是根据前面学习的知识而设置,请独立完成功能。如果你还无法独立完成以下练习,则证明还没有掌握前面的章节,好好回顾一下吧。 ## 题目要求: >[success] >1. 让用户输入账号与密码 >2. 如果账号密码匹配(用户名:Milton,密码:123456),则提示欢迎信息,退出程序 >3. 如果账号不存在,则提示账号不存在,重新回到步骤1 >4. 如果密码不匹配,则提示密码有误,重新回到步骤1 >5. 密码连续错误3次以上,提示账号已被锁定,重新回到步骤1 ## 规则 * 请独立完成实战要求,完成后再参考下面的示例代码 * 如果觉得自己的代码<span style="color:red">*更加优雅,更加高效*</span>,欢迎留言**,与大家一起**分享**哦~ :-: <span style="color:green;font-size:30;">一起来挑战吧~</span> <br> ## 参考代码 ```python # 用户数据 users = [ {'name': 'Milton', 'password': '123456', 'errors': 0}, {'name': 'Cherish', 'password': '654321', 'errors': 0} ] while True: user = None index = None input_name = input("用户名:").strip() input_pwd = input("密码:").strip() # 从用户数据中查找用户名匹配的数据 for i, item in enumerate(users): if input_name == item.get("name"): index = i user = item break # 如果用户名存在 if user: # 用户错误次数3次以上 if int(user["errors"]) >= 3: print("您的账号已被锁定,请联系管理员") continue # 密码匹配 if input_pwd == user.get("password"): print("恭喜您,登录成功") break # 密码不匹配 else: # 更新用户错误次数 user["errors"] = int(user.get("errors")) + 1 users[index] = user # 密码不匹配时的提示 if user["errors"] >= 3: print("您连续输入3次错误密码,账号已被锁定,请联系管理员") else: print("密码不匹配!") # 用户不存在 else: print("用户名不存在!") ``` ### 代码解释: 1. 这里使用了前面章节介绍的列表与字典来存储用户信息 ```python users = [ {'name': 'Milton', 'password': '123456', 'errors': 0}, {'name': 'Cherish', 'password': '654321', 'errors': 0} ] ``` 2. 巧用while True 死循环,直到正确登录后才退出程序,否则一直循环让用户输入 3. 获取到用户的输入用户名后,从用户列表中遍历寻找,如果找得到用户名相等的用户字典,则将该用户的索引位置index和值user提取出来。方便后面修改user中的登录错误次数,然后根据索引位置更新用户列表中的数据 4. 完成步骤3的循环后,主要判断逻辑如下: ```python 如果user存在: 如果用户登录错误次数大于3: 提示已锁定 否则: 如果密码匹配: 登录成功,退出程序 否则: 登录错误次数+1 提示密码不匹配 否则: 提示用户不存在 ``` <hr style="margin-top:100px"> :-: ![](https://box.kancloud.cn/2ff0bc02ec938fef8b6dd7b7f16ee11d_258x258.jpg) ***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***