登录验证异常:代码仅识别最后一个字典项,无法正确校验用户名密码
登录校验问题修复方案
你的代码问题出在cred_valid方法的逻辑上:循环遍历bank_data时,只是不断用最后一个用户的信息覆盖变量a和p,循环结束后校验逻辑只和最后一个用户比对,自然无法识别其他用户的账号密码。
下面是修复后的代码,同时优化了不必要的操作:
bank_data = [ { "username": "jordyn123", "password": '1234', "balance": 100_000 }, { "username": "ron456", "password": '6789', "balance": 500 } ] class BankAccount: def __init__(self, username, password): self.username = username self.password = password # 校验用户名和密码 def cred_valid(self): # 逐个遍历所有用户数据 for user in bank_data: if user['username'] == self.username and user['password'] == self.password: print("登录成功") return # 找到匹配项后直接终止方法,避免多余遍历 # 遍历完所有用户都没匹配到 print("用户名或密码错误,请重试")
修改说明:
- 去掉了没必要的
data列表和重复实例化BankAccount的操作,直接用原始字典比对,更高效 - 遍历过程中每找到一个匹配的用户就立即输出成功并返回,不用继续遍历剩余数据
- 只有当所有用户都比对失败时,才输出错误信息,确保所有账号都能被正确校验
内容的提问来源于stack exchange,提问作者thegreat21
相关产品推荐
相关产品推荐

