python - 我的错误在哪里?在Python中检查密码是否正确

我是 Python 和编程新手。我正在尝试制作一个程序来验证输入的密码是否具有特定格式。我很确定我的代码是正确的,但显然......它不是。当密码格式正确时,它不会退出 while 循环。 我的错误在哪里?感谢大家的耐心等待!



low = ['abcdefghijklmnopqrstuvwxyz']
up = ['ABCDEFGHIJKLMNOPQRSTUVWXYZ']
cr = ['@$%&']
digito = ['0123456789']
counter1 = 0
tries = True
while tries:
    length = False
    May = False
    Minus = False
    Num = False
    Char = False
    counter1 += 1
    password = input('Password: ')
    if len(password) > 7 and len(password) < 16:
        length = True
    for caracter in password:
        if caracter in low:
            Minus = True
        if caracter in up:
            May = True
        if caracter in cr:
            Char = True
        if caracter in digito:
            Num = True
    if length and May and Minus and Num and Char:
        print('Password ok.')
        passw = password
        tries = False
    if counter1 == 5:
        print('You had 5 attemps.')
        break

最佳答案

问题是当您检查时:

"A" in ['ABCDEFGHIJKLMNOPQRSTUVWXYZ']

它返回 False。这是因为列表 ['ABCDEFGHIJKLMNOPQRSTUVWXYZ'] 不包含元素 "A"。尝试用以下代码替换前 4 行,看看它是否有效:

low = 'abcdefghijklmnopqrstuvwxyz'
up = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
cr = '@$%&'
digito = '0123456789'

https://stackoverflow.com/questions/72604770/

相关文章:

r - 为什么带有 %in% 的条件会忽略缺失值?

multithreading - 我怎样才能避免这个循环中的 "i"依赖?语言

c# - 返回匿名类型的 IEnumerable

python - 通过多级函数传递 kwargs,解包其中一些但传递所有函数

bash - awk 或条件

sql - SQL Server 中 OVER 和 PARTITION BY 生成的值的状态

java - BitSet 的 set 方法如何处理向左移动的位?

c# - 自定义类作为 C# 中字典的键不起作用

awk - 在 text.file 中切换列

java - Spring Boot-2.1.3 : Parallel Methods Invoca