使用python的用户名和密码

2024-04-23 10:28:10 发布

您现在位置:Python中文网/ 问答频道 /正文

写一段要求用户设置密码的代码

  • 查询用户的用户名
  • 两次查询用户的密码,确保用户输入同一密码两次
  • 只允许3次尝试获取正确的密码

密码的规则是

  • 至少一个数字
  • 至少一个小写字母
  • 至少一个大写字母
  • 允许的字符:数字、字母、“\”、“-”和“.”

到目前为止,我已经写了:

for x in range(0, 3):
    usrname = input('Enter your User Name: ')
    pwd = input('Enter a Password : ')
    cpwd = input('Enter your Confirm Password: ')
    if pwd==cpwd:
        break
    else:
        print('Password does not match please Re-enter')

我不清楚申请密码规则的正则表达式。所以任何人都可以帮助我应用正则表达式作为密码。在


Tags: 代码用户密码inputyour规则pwd数字
2条回答

您不需要使用regex。在

要检查是否有号码,可以使用:

any(c.isdigit() for c in passw)

为了检查大写字母,您可以使用相同的方法,但是使用isupper(),而使用{}表示小写。为了检查它们是否都是合法字符,我只需要用白名单定义一个字符串,然后执行如下操作:

^{pr2}$

然后,您可以将所有这些条件与all()内建字符串一起使用。在

我让你来执行它。毕竟,这是你的任务。在

我可能不会使用regex检查你的密码的大小写和数字。我只需遍历pwd字符串并设置有关是否满足您的需求的标志,然后使用regex测试允许的字符。在

import re

hasUpper, hasLower, hasDigit = False, False, False
for ch in pwd:
    if not hasUpper and ch in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": # This is also string.ascii_uppercase
        hasUpper = True
    if not hasLower and ch in "abcdefghijklmnopqrstuvwxyz": # This is also string.ascii_lowercase
        hasLower = True
    if not hasDigit and ch in "0123456789":
        hasDigit = True
if all(hasUpper, hasLower, hasDigit) and not re.search("[^A-Za-z0-9_.-]",pwd):
    # password requirements fulfilled

相关问题 更多 >