Python 中的密码验证

Password verification in Python

我正在研究 Python 一段时间并尝试解决以下问题: 下面给出部分验证例程。当用户输入密码时,系统会检查以确保密码在 8 到 15 个字符之间,然后要求再次输入以验证密码。要求完成任务(a) 条件1、条件2 和任务(b) IF ... ELSE 语句。编写代码并测试程序。

password1 = input("Please enter a new password, between 8 and 15 characters: ")

match = False

while CONDITION 1

  while CONDITION 2

    password1 = input ("Password must be between 8 and 15 characters - please re-enter: ")
  endwhile

  password2 = input ("Please verify password: ")

  if ....

    print 
  else

  endif

endwhile

我完成了任务 (b),但在任务 (a) 中我遇到了 while 循环条件 "while match:" 的问题。当我离开变量 match = False 并输入所需字符数的密码时,循环立即终止并且不使用 if .. else 语句进行验证。如果我写 match = True 并且在第一次尝试输入不正确的字符数(使用正确的数字它再次终止循环)程序无论如何都会进行验证而忽略字符数。如果密码相同(例如 111 和 111),它会返回循环并再次询问具有所需字符数的密码。然后,如果我在正确数量的字符和密码验证后输入相同,它会像预期的那样终止程序。我认为 while 循环中带有条件 "match" 的东西是不正确的,但无法弄清楚它应该是什么。谢谢

password1 = input("Please enter a new password, between 8 and 15 characters: ")
match = True
while len(password1) < 8 or len(password1) > 15:
  password1 = input ("Password must be between 8 and 15 characters - please re-enter: ")
  while match:
    password2 = input ("Please verify password: ")
    if password1 == password2:
      print ("Password is valid")
      break
    else:
      print ("Password is invalid")

只有在第一次输入错误的字符数时,您才匹配。如果用户第一次输入 8 到 15 个字符会怎样?第一个 while 循环不会执行,因此什么也不会执行。 Condition1(长度在8到15之间)必须在循环外检查,第二个while循环必须保持独立。

pass1 = input('Enter a password : ')
while len(pass1) < 8 or len(pass1) > 15:
    print('Incorrect, try again')
    pass1 = input('Enter a password : ')
# Program reaches here only if pass1 is between 8 to 15 characters, otherwise first loop will be infinite
pass2 = input('Verify the password : ')
if pass1 == pass2:
    print('Valid')
else:
    while pass1 != pass2:
        pass2 = input('Invalid. Re-enter the correct password : ')

上面的代码首先取password1,检查它是否在8-15个字符范围内。如果不是,则第一个 while 循环继续执行。当给出有效输入时,它接受 password2,并检查是否相等。如果它是第一次匹配,则不需要进一步的 while 循环。如果不匹配,while 循环将继续执行,直到没有提供相同的密码。希望这对您有所帮助!

我认为你和我一样是新手。我发现您对问题的代码解释有以下错误: 条件 1 和 2 错位 如果语句在错误的循环中。 你的匹配也没有切换。

看看这个:

def password_verification():
    password1 = input('Please enter a new password, between 8 to 15 characters: ')
    match = False
    while match is False:
        while len(password1) < 8 or len(password1) > 15:
            password1 = input('Password must be between 8 to 15 characters - please re-enter password: ')
        password2 = input('Please verify password: ')
        if password1 == password2:
            print('Password is valid')
            match = True

        else:
            print('Password is invalid')

    return match

password_verification()