我正在创建一个密码验证模块,但我不知道如何为所述密码设置某些规则。密码至少需要1个大写字母,1个小写字母和1个数字
这是我到目前为止所编码的内容:
def validacion_contraseña():
flag = 1
import re
while (flag == 1):
cont = 0
pass=input("Ingresa una contraseña:")
# r = re.match("^[a-z]*$", usser)
for x in pass:
cont = cont + 1
if (cont < 8):
print(True)
flag = 0
if not (re.match("[aA-zZ,0-9]",pass)):
print("El nombre de usuario puede contener solo letras y números.")
flag = 0
if (flag == 1):
print(True)
flag = 0
答案 0 :(得分:1)
首先,不要将pass
用作变量 - 它是一个python关键字(这意味着&#34;什么都不做&#34;)......
def something():
pass
接下来,我建议分别计算每个班级(nums / upper / lower),然后检查他们是否符合要求。
另请注意,您几乎总是只想import
一次。除了在某些高级情况下,所有import语句都应位于文件的最顶层。
最后,让我们使用一个布尔valid
变量来整理循环条件...
import re
def validacion_contraseña():
valid = False
while not valid:
contrasena = input("Ingresa una contraseña:")
nums = len(re.findall('[0-9]', contrasena))
lower = len(re.findall('[a-z]', contrasena))
upper = len(re.findall('[A-Z]', contrasena))
if nums >= 1 and lower >= 1 and upper >= 1:
valid = True
print('Contraseña: {0}' + contrasena)
我们正在使用re.findall()
查找与模式的每个非重叠匹配。对于单字符模式,这有效地返回匹配字符列表。
然后我们使用len()
计算返回的项目数。