Python判断新用户ID是否重复时报NameError变量未定义问题
错误原因分析
- 触发
NameError的核心原因是列表推导式的临时变量作用域限制:你在第2行列表推导式里定义的current_user_case是仅在推导式内部生效的临时变量,推导式执行完成生成current_users_case列表后,这个临时变量就会被销毁,后续循环中直接调用current_user_case自然会报未定义错误。 - 就算没有这个报错,你的校验逻辑也存在问题:你需要判断的是新ID转小写后是否存在于已转小写的整个已占用ID列表中,而非和单个临时变量做相等判断。
修正后可运行代码
current_users = ['id_1','id_2','id_3', 'ID_4', 'id_5'] # 全部转为小写存储,避免大小写导致的校验遗漏 current_users_lower = [user.lower() for user in current_users] new_users = ['id_5','id_4','id_7', 'id_8', 'id_9'] for new_user in new_users: # 新ID也转小写后再校验是否存在 if new_user.lower() in current_users_lower: print("Sorry, ID already taken") else: print("ID available")
运行输出
Sorry, ID already taken Sorry, ID already taken ID available ID available ID available
内容的提问来源于stack exchange,提问作者RobertCode
相关产品推荐
相关产品推荐

