你如何使用:isalnum、isdigit、isupper 来测试字符串的每个字符?

2022-01-19 00:00:00 python function return passwords

问题描述

我正在尝试制作一个密码强度模拟器,它要求用户输入密码,然后返回分数.

I am trying to make a password strength simulator which asks the user for a password and then gives back a score.

我正在使用:

islanum() 
isdigit()
isupper() 

试试看输入的密码有多好.

to try and see how good the inputted password is.

我希望它不是返回布尔值,而是评估密码的每个字符,然后程序将所有真"值相加并将其转换为分数.示例代码:

Instead of returning boolean values, I want this to assess each characters of the password, and then the program to add up all the "True" values and turn it into a score. EXAMPLE CODE:

def upper_case():
    points = int(0)
    limit = 3
    for each in pword:
        if each.isupper():
            points = points + 1
            return points
        else:
            return 0

任何帮助将不胜感激!谢谢!!

Any help would be much appreciated!! THANKS!!


解决方案

.isalnum(), .isupper(), .isdigit() 和朋友是 Python 中 str 类型的方法,调用方式如下:

.isalnum(), .isupper(), .isdigit() and friends are methods of the str type in Python and are called like this:

>>> s = "aBc123"
>>> s[0].isalnum()
True
>>> s[1].isupper()
True
>>> s[3].isdigit()
True

简单的getscore()功能:

Simple getscore() Function:

s = "aBc123@!xY"

def getscore(s):
    score = 0
    for c in s:
        if c.isupper():
            score += 2
        elif c.isdigit():
            score += 2
        elif c.isalpha():
            score += 1
        else:
            score += 3
    return score

print getscore(s)

输出:

13

更好的版本:

s = "aBc123@!xY"


def getscore(s):
    return len(s) + len([c for c in s if c.isdigit() or c.isupper() or not c.isalpha()])

print getscore(s)

输出:

17

相关文章