[16/04/2025] Обновлен скрит, добавлены проценты для выбора гендера с ориентацией на возраст

This commit is contained in:
Yury Kiselev 2025-04-16 11:08:36 +03:00
parent 51f5d2df11
commit 77c94b4929

37
main.py
View File

@ -28,7 +28,7 @@ def generate_random_birthday(years_old_from, years_old_to):
random_day = date.fromordinal(random.randint(start_date, end_date))
# из случайной даты за прошлый год вычитаем случайный возраст в границах years_old_from и years_old_to
return random_day.replace() - timedelta(days=years_old*365)
return years_old, random_day.replace() - timedelta(days=years_old*365)
def generate_random_snils():
@ -71,10 +71,14 @@ if __name__ == '__main__':
# гендер и соответствующее окончания Отчества и %, при котором будет выбран первый элемент списка
gender_list = [{"gender":"male", "patronymic_postfix":"вич"},
{"gender":"female", "patronymic_postfix":"овна"}]
percent_for_first_element = 46.47
# процент что человек будет мужчиной по возрастным категориям
percent_for_male_more_0y = 52.5
percent_for_male_more_25y = 46
percent_for_male_more_50y = 25
percent_for_male_more_75y = 10
# номер телефона (идет инкремент 1 после каждого использования) и окончание почты
mobile_global = 1000001
mobile_global = 89991000000
email_global = "@test.test"
# создаем файл и добавляем хедеры
@ -83,24 +87,33 @@ if __name__ == '__main__':
# создаем пул по размеру равный pool_len
for i in range(pool_len):
temp_gender = gender_list[0] if (round(random.uniform(1, 100), 2) <= percent_for_first_element) else gender_list[1]
# выбор возраста и процента для выбора гендера
years_old, birthday = generate_random_birthday(18, 99)
if years_old <= 25:
temp_percent = percent_for_male_more_0y
elif years_old <= 50:
temp_percent = percent_for_male_more_25y
elif years_old <= 75:
temp_percent = percent_for_male_more_50y
else:
temp_percent = percent_for_male_more_75y
temp_gender = gender_list[0] if (round(random.uniform(1, 100), 2) <= temp_percent) else gender_list[1]
gender = temp_gender["gender"]
first_name = generate_random_string(abc_ru, random.randint(4, 6)).capitalize()
last_name = generate_random_string(abc_ru, random.randint(6, 10)).capitalize()
patronymic = generate_random_string(abc_ru, random.randint(6, 10)).capitalize() + temp_gender["patronymic_postfix"]
gender = temp_gender["gender"]
birthday = generate_random_birthday(18, 99)
mobile = f"8999{str(mobile_global)[0:3]}{str(mobile_global)[3:5]}{str(mobile_global)[5:7]}"
mobile_global +=1
email = generate_random_string(abc_en, random.randint(10, 20)) + email_global
snils = generate_random_snils()
snils_f = f"{snils[0:3]}-{snils[3:6]}-{snils[6:9]} {snils[9:11]}" # форматирование снилса для вывода
file.write(f"{first_name},{last_name},{patronymic},{gender},{birthday},{mobile},{email},{snils}\n")
mobile_global += 1 # инкремент чтобы обновить глобальный номер
file.write(f"{first_name},{last_name},{patronymic},{gender},{birthday},{mobile_global},{email},{snils_f}\n")
# закрываем работу с файлом
file.close()