首页 > 解决方案 > 如何根据用户名的唯一性对用户名进行排名?

问题描述

假设我想为用户名的唯一性打分(这意味着分数越高,其他人拥有它的可能性越小)。例如,用户名“car”的得分应该很低,但“fastredcar1887$”的得分应该很高。

我的代码效果很好,只有很低的失败率,但我认为有更好的方法。字母表中的每个字母都会将分数加一。如果有数字,它会将分数增加 2,并且名称中的数字总数是 2 的幂,符号与数字相同,但不除以 2。

scoreNum=(1/2*totalnumbers)^2+2
ScoreAlpha=totalalpha
ScoreSympol=(totalsymbols)^2+2

然后totalscore=scoreNum+Scorealpha+scoresympol

def rating(name):
    rate=0
    num=0
    symbol=0
    thereisnum=False
    thereissymb=False
    for i in range(len(name)):
        if name[i].isnumeric():
            thereisnum=True

            num+=1
        if name[i].isalpha():
            rate+=1
        if name[i] in ",*&^%$#@:!()/\+-.~<>{}?=+@!#":
            thereisnum=True

            symbol+=1
    if thereisnum==True:


        rate+=int(round(1/2*(num)**2+2))
    if thereissymb==True:    
        rate+=int(round((symbol)**2+2))  
    return rate   

我想得到更好的结果,例如,123456789 很常见,但我的系统评价它非常高。我相信有很多方法可以更好地测试用户名。例如,有些字母比较少见。处理这个问题的最佳方法是什么?谢谢你。

标签: pythonmathstatistics

解决方案


检查非常常见的用户名的最佳方法是简单地下载它们的列表(您甚至可以复制粘贴这样的列表)并在您的唯一性代码中引用它。这比尝试实现一种算法来预测人们常用的用户名要容易得多。


推荐阅读