是否想始终以大写字母开头我的密码?

时间:2018-08-13 05:50:22

标签: python-3.x jupyter-notebook

我正在使用Python 3.6并在Jupyter Notebook上工作。我使用正则表达式进行密码验证的代码非常有效。我只是想增强一下密码,密码应该始终以大写字母开头。我不知道如何在elif循环中编写正则表达式。代码如下:

import re
import getpass

pattern = re.compile(r"")

while True:
    my_str = getpass.getpass("Enter a password: ")

    if(8>len(my_str)):
        print("Password must be of 8 digits")

    if re.search(r"[a-z{1,9}]", my_str) is None:
        print("Your Password must contain 1 lowercase letter")

    if re.search(r"[!@$&{1,5}]", my_str) is None:
        print("Your Password must contain 1 special character")

    if re.search(r"[A-Z{1,5}]", my_str) is None:
        print("Your Password must contain 1 uppercase letter")

    if re.search(r"\d{1,5}", my_str) is None:
        print("Your Password must contain 1 digit")
    elif re.match(r"[A-Za-z0-9@#$%^&+=]{8,}",my_str):
        pattern = re.compile(r"[A-Za-z0-9@#$%^&+=]{8,}")
        password = pattern.match(my_str)
        print(password)
        break
else:
    print("Not a valid Password")

1 个答案:

答案 0 :(得分:0)

您可以使用此条件测试第一个字符是否为大写字母:

dt.weekday_name

Index(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Monday',
       'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
      dtype='object')

尽管如此,您的代码还有更多错误

改进

您在my_str[0].isupper() 语句中描述的条件似乎与您要测试的条件不符。

例如,条件print将检查密码是否包含小写字母或任何字符re.search(r"[a-z{1,9}]", my_str){1,9。您可能希望将括号放在字符集之外。

此外,您的代码流不正确,例如,将永远无法访问}循环的else子句。

建议使用while标志,只要不满足条件,该标志就会变为valid,只有标志仍然为False时,循环才最终退出。否则,将打印未满足的条件,并重新开始循环。

固定代码

True