如何限制某些用户输入?

时间:2017-11-07 01:22:44

标签: python

我正在创建一个密码验证模块,但我不知道如何为所述密码设置某些规则。密码至少需要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

1 个答案:

答案 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()计算返回的项目数。