如何验证用户名数组与密码数组对应索引匹配及修正代码
问题解决方案
原代码问题梳理
- 缩进格式错误:Python对缩进要求严格,原代码中输入和判断语句的缩进层级混乱,会引发语法错误。
- 未定义变量
both:代码中使用了未声明的both变量,运行时会触发NameError。 - 逻辑漏洞:仅验证密码是否存在于密码数组,未关联用户名对应的索引,导致任意用户输入其他用户的正确密码也会被判定为合法。
修正后的代码
username_array = ["tina", "john", "kath", "lina", "luke", "ali"] password_array = ["tr.35", "sj.34", "kj.45", "kfj.67", "xdjbh.20", "djmv.92"] # 获取用户名输入 username = input("Please enter in your username: ") if username in username_array: print("Username found!") # 获取用户名对应的索引 user_index = username_array.index(username) # 获取密码输入 password = input("Please enter in your password: ") # 验证对应索引的密码是否匹配 if password == password_array[user_index]: print("Correct password!") else: print("Invalid Password!!") else: print("Invalid Username!!")
代码说明
- 缩进修正:统一代码缩进层级,确保Python解释器能正确识别代码块逻辑。
- 索引关联验证:当用户名存在时,通过
username_array.index(username)获取该用户名在数组中的索引,再用此索引从password_array中取出对应的密码进行比对,保证用户名和密码是一一配对的。 - 移除无效变量:删除未定义的
both变量,替换为直接的密码匹配判断。 - 流程优化:只有用户名验证通过后,才会提示输入密码,避免无效的密码输入步骤。
内容的提问来源于stack exchange,提问作者Shadi Ahmadi
相关产品推荐
相关产品推荐

