You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
selected = random.random() * 90
So selected cannot have values higher than 90.
As far as I understood, this number represents summarized wage of names, for example, sum of second column in this file, while third represents cummulative wage: https://github.com/treyhunner/names/blob/master/names/dist.male.first
But in this code, there is a consequent for-loop:
with open(filename) as name_file:
for line in name_file:
name, _, cummulative, _ = line.split()
if float(cummulative) > selected:
return name
This means, that it is impossible to get a name after name SHON
SHON 0.004 90.001 1208
All names after SHON are unreachable.
My offer is to change hardcoded magic number 90 to a number, that represents cummulative wage of pre-last name.
For example:
def get_name(filename):
name_file = open(filename)
#Using cummulative wage of second name from end
prelast_cum_wage = name_file[len(name_file)-2][2]
selected = random.random() * prelast_cum_wage
for line in name_file:
name, _, cummulative, _ = line.split()
if float(cummulative) > selected:
return name
In https://github.com/treyhunner/names/blob/master/names/__init__.py#L23:
This is clearly an instance of magic number antipattern, the value of 90 must be documented.
The text was updated successfully, but these errors were encountered: