python - 为什么我的程序无法检测大写字符?

标签 python string uppercase

我要求用户输入密码。然后,如果密码符合特定条件,程序将确定密码是否有效。

这是有问题的部分。

for i in range(0, len(password)):
    if(password[i].isdigit()==True):
        isNum+=1
    elif (password[i].isalpha()==True):
        isLetter+=1
    elif (password[i].isupper()==True):
        isUpper+=1

我的程序可以很好地检测数字和字母,但不能检测大写字母。如果我输入密码1234Foxes,它会说有4个字母,4个数字,总共8个字符,但它说有0个大写字母。

最佳答案

如果isupper为真,则isalpha一定为真,因为大写字母必然是字母。由于您使用的是 elif,因此条件是排他的,一旦 isalpha 检查为真,检查就会停止。

如果您希望运行这两项检查,请不要使用 elif:

for character in password:
    if(character.isdigit()):
        isNum += 1

    elif (character.isalpha()):
        isLetter += 1

        if (character.isupper()):
            isUpper += 1

我还通过直接迭代字符串摆脱了索引 password 的需要,以及多余的 == True

关于python - 为什么我的程序无法检测大写字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56140201/

相关文章:

python - ReportLab 中的 Unicode 处理

c - 如何将字符串拆分一次?

c++ - 从 char 中 cout exe 文件内容

java - 在Java中将十六进制字符串转换为ASCII

c# - 将 char 转换为小写的棘手方法 - 以及相反的方法

ios - 如何查找特定字符在 NSString 中以大写形式出现的次数?

python - Mailman 是否有 API 或导出列表、用户和所有者选项?

python - 非阻塞服务器 Apache Thrift Python

python - 为什么 str.strip() 比 str.strip (' ' 快得多)?

objective-c - 如何检测字符是大写还是小写?