python - 如何根据用户名的唯一性对用户名进行排名?
问题描述
假设我想为用户名的唯一性打分(这意味着分数越高,其他人拥有它的可能性越小)。例如,用户名“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 很常见,但我的系统评价它非常高。我相信有很多方法可以更好地测试用户名。例如,有些字母比较少见。处理这个问题的最佳方法是什么?谢谢你。
解决方案
检查非常常见的用户名的最佳方法是简单地下载它们的列表(您甚至可以复制粘贴这样的列表)并在您的唯一性代码中引用它。这比尝试实现一种算法来预测人们常用的用户名要容易得多。
推荐阅读
- python - 通过python从数据库中读取blob数据并以.zip格式存储
- blockchain - 从 Solidity 中的另一个函数访问在一个函数中初始化的变量值
- reactjs - 如何使用 React-router 渲染多个组件相同的路由路径
- c# - 在 UWP 应用中打印 pdf 文件后如何减少内存消耗
- python - 如何从 PySpark 列表中删除/替换字符
- postman - 如何从 Postman 的正文请求中的数据文件(嵌套 json)中获取数据变量
- python - 当它只有日期时,如何在熊猫数据框的索引处显示时间(也以所需的格式)?
- android - 如何清除 ExpandableListView?
- java - 打印出在 String 中找到 Char 的行号
- oracle - 如何创建将数据从一个表传输到另一个表的触发器