Допустим, я хочу дать оценку уникальности имени пользователя (то есть, чем выше оценка, тем менее вероятно, что кто-то другой имеет ее).Например, имя пользователя «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 очень распространен, но моя система оценивает его очень высоко.Я считаю, что есть много способов лучше проверить имена пользователей.Например, некоторые буквы встречаются реже.Как лучше всего справиться с этой проблемой?Спасибо.