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()
我正在研究 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()