为何Python JSON验证代码输出两条错误信息?如何消除
解决用户验证时的多余提示问题
问题根源在于你的代码会遍历所有用户数据,哪怕已经找到匹配的用户名,仍会继续检查剩下的用户,导致后续不匹配的用户触发错误提示;同时密钥错误时,循环还会继续跑其他用户,也会弹出错误提示。
解决核心是:找到匹配用户后立即终止遍历,并且只在完全没找到匹配用户时才输出用户名错误,密钥错误单独处理。
方法一:用标志位+break终止循环
这种写法直观,适合新手理解:
import json # 读取JSON里的用户数据 with open('users.json', 'r') as f: users = json.load(f) input_username = input("输入用户名:") input_key = input("输入密钥:") user_found = False for user in users: if user['username'] == input_username: user_found = True # 验证密钥 if user['key'] == input_key: print(f"欢迎回来,{input_username}!") else: print("密钥不正确,请重新输入!") break # 找到目标用户后直接跳出循环,不再检查其他用户 # 遍历完所有用户都没匹配到,才提示用户名错误 if not user_found: print("未找到该用户名,请检查输入!")
方法二:用生成器直接定位匹配用户
这种写法更简洁,利用Python的next()函数直接找到第一个匹配的用户,避免多余循环:
import json with open('users.json', 'r') as f: users = json.load(f) input_username = input("输入用户名:") input_key = input("输入密钥:") # 从用户列表里筛选出匹配的用户名,没找到就返回None target_user = next((u for u in users if u['username'] == input_username), None) if target_user: if target_user['key'] == input_key: print(f"欢迎,{input_username}!") else: print("密钥错误!") else: print("用户名不存在!")
两种方法都能解决问题:要么找到用户就停循环,要么直接定位目标用户,不会再因为遍历剩余用户弹出多余提示。
内容的提问来源于stack exchange,提问作者rVan
相关产品推荐
相关产品推荐

