使用Python进行密码验证
我正在尝试制作一个代码来验证你进入程序的密码。密码长度应至少为6个字符,包含1个大写字母、1个小写字母、1个数字和1个标点符号。这就是我现在所拥有的:使用Python进行密码验证,python,while-loop,passwords,Python,While Loop,Passwords,我正在尝试制作一个代码来验证你进入程序的密码。密码长度应至少为6个字符,包含1个大写字母、1个小写字母、1个数字和1个标点符号。这就是我现在所拥有的: def main(): while True: password = input("Please enter the desired password: ") if not password.islower(): print("This is NOT a valid passwor
def main():
while True:
password = input("Please enter the desired password: ")
if not password.islower():
print("This is NOT a valid password.")
elif not password.isupper():
print("This is NOT a valid password.")
elif not password.isdigit():
print("This is NOT a valid password.")
elif not len(password) < 6:
print("This is NOT a valid password.")
else:
print("This is a valid password.")
break
main()
def main():
尽管如此:
密码=输入(“请输入所需密码:”)
如果不是密码。islower():
打印(“这不是有效的密码。”)
elif不是密码。isupper():
打印(“这不是有效的密码。”)
elif不是密码。isdigit():
打印(“这不是有效的密码。”)
elif not len(密码)<6:
打印(“这不是有效的密码。”)
其他:
打印(“这是一个有效的密码。”)
打破
main()
出于某种原因,即使我写了一个有效的密码,它也会一直打印出密码无效,有人知道为什么会发生这种情况吗?。此外,如何使代码检测到我编写的密码中至少有1个标点符号?谢谢大家! 您的代码做错了。也就是说,您正在检查整个密码是否较低,然后再次检查整个密码是否较高。由于这个原因,它总是显示
无效
。但您需要检查的是,密码是否包含单个小写字符,是否包含单个大写字符,是否包含单个数字,长度至少应为6
为此,必须使用any()
,如果iterable中的任何项为True,则返回True,否则返回False
def main():
while True:
password = input("Please enter the desired password: ")
if not any(p.islower() for p in password):
print("This is NOT a valid password")
elif not any(p.isupper() for p in password):
print("This is NOT a valid password")
elif not any(p.isdigit() for p in password):
print("This is NOT a valid password")
elif len(password) < 6:
print("This is NOT a valid password")
else:
print("This is a valid password")
break
main()
def main():
尽管如此:
密码=输入(“请输入所需密码:”)
如果没有(p.islower()表示密码中的p):
打印(“这不是有效的密码”)
elif not any(p.isupper()表示密码中的p):
打印(“这不是有效的密码”)
elif not any(p.isdigit()表示密码中的p):
打印(“这不是有效的密码”)
elif len(密码)<6:
打印(“这不是有效的密码”)
其他:
打印(“这是一个有效的密码”)
打破
main()
您的代码做错了。也就是说,您正在检查整个密码是否较低,然后再次检查整个密码是否较高。由于这个原因,它总是显示无效
。但您需要检查的是,密码是否包含单个小写字符,是否包含单个大写字符,是否包含单个数字,长度至少应为6
为此,必须使用any()
,如果iterable中的任何项为True,则返回True,否则返回False
def main():
while True:
password = input("Please enter the desired password: ")
if not any(p.islower() for p in password):
print("This is NOT a valid password")
elif not any(p.isupper() for p in password):
print("This is NOT a valid password")
elif not any(p.isdigit() for p in password):
print("This is NOT a valid password")
elif len(password) < 6:
print("This is NOT a valid password")
else:
print("This is a valid password")
break
main()
def main():
尽管如此:
密码=输入(“请输入所需密码:”)
如果没有(p.islower()表示密码中的p):
打印(“这不是有效的密码”)
elif not any(p.isupper()表示密码中的p):
打印(“这不是有效的密码”)
elif not any(p.isdigit()表示密码中的p):
打印(“这不是有效的密码”)
elif len(密码)<6:
打印(“这不是有效的密码”)
其他:
打印(“这是一个有效的密码”)
打破
main()
函数islower()
,isupper()
,isdigit()
检查字符串的所有元素是否满足该条件。因此,当您使用例如,islower()
时,您正在检查字符串中的所有字符是否都是小写
对于这种情况,我将使用正则表达式检查每个条件。使用正则表达式,您可以自定义要检查的所有规则,学习起来并不困难(请参阅文档)
一个使用你所拥有的东西的例子是
import re
password = input('Write a password: ')
if re.search('[A-Z]+', password) is None:
print('invalid password!')
elif re.search('[a-z]+', password) is None:
print('invalid password!')
elif re.search('[0-9]+', password) is None:
print('invalid password!')
elif re.search('[' + string.punctuation + ']+', password) is None:
print('invalid password!')
elif len(password) < 6
print('invalid password!')
else:
print('valid password!!')
重新导入
密码=输入('写入密码:')
如果重新搜索(“[A-Z]+”,密码)为无:
打印('无效密码!')
elif重新搜索(“[a-z]+”,密码)为无:
打印('无效密码!')
elif重新搜索(“[0-9]+”,密码)为无:
打印('无效密码!')
elif re.search(“[”+字符串.标点符号+“]+”,密码)为无:
打印('无效密码!')
elif len(密码)<6
打印('无效密码!')
其他:
打印('有效密码!!')
函数islower()
,isupper()
,isdigit()
检查字符串的所有元素是否满足该条件。因此,当您使用例如,islower()
时,您正在检查字符串中的所有字符是否都是小写
对于这种情况,我将使用正则表达式检查每个条件。使用正则表达式,您可以自定义要检查的所有规则,学习起来并不困难(请参阅文档)
一个使用你所拥有的东西的例子是
import re
password = input('Write a password: ')
if re.search('[A-Z]+', password) is None:
print('invalid password!')
elif re.search('[a-z]+', password) is None:
print('invalid password!')
elif re.search('[0-9]+', password) is None:
print('invalid password!')
elif re.search('[' + string.punctuation + ']+', password) is None:
print('invalid password!')
elif len(password) < 6
print('invalid password!')
else:
print('valid password!!')
重新导入
密码=输入('写入密码:')
如果重新搜索(“[A-Z]+”,密码)为无:
打印('无效密码!')
elif重新搜索(“[a-z]+”,密码)为无:
打印('无效密码!')
elif重新搜索(“[0-9]+”,密码)为无:
打印('无效密码!')
elif re.search(“[”+字符串.标点符号+“]+”,密码)为无:
打印('无效密码!')
elif len(密码)<6
打印('无效密码!')
其他:
打印('有效密码!!')
试着用英语解释一下,你希望每个条件都能达到什么目的。例如:如果不是password.islower():
您希望哪些值与此条件匹配(因此无效)?您希望哪些值与此条件不匹配(以便检查其他值)?现在,尝试验证一下。例如,您可以为每个“无效密码”行使用不同的消息,以便查看满足了哪些条件。将elif NOT len(password)<6:
更改为elif len(password)<6:
@KarlKnechtel Withif NOT password.islower():
我希望它能够检测到