首页 > 解决方案 > 为什么我的程序没有检测到大写字符?

问题描述

我要求用户输入密码。然后程序确定密码是否有效,如果它符合某些标准。

这是有问题的部分。

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 个大写字母。

标签: pythonstringuppercase

解决方案


如果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


推荐阅读