#!/usr/bin/env python3importrandomimportsysfromtypingimportList# UTILITY GENERATORSdef__generate_several(count:int,func:callable)->list:return[f()forfin[func]*count]def__generate_random_numbers(count:int)->List[int]:return__generate_several(count,lambda:random.randrange(10))def__generate_random_small_letters(count:int)->List[str]:return[chr(n)fornin__generate_several(count,lambda:random.randint(97,122))]def__generate_random_capital_letters(count:int)->List[str]:return[chr(n)fornin__generate_several(count,lambda:random.randint(65,90))]# GENERATORdef_generate_password(name:str)->List[str]:""":param name: the name of a user :returns: a random **password** for the given name as a list of characters """q=len(name)%6b12=__generate_random_capital_letters(2)b_middle=__generate_random_small_letters(10-q-3)b_ending=__generate_random_numbers(10-(10-q)+1)returnb12+b_middle+b_ending# PUBLIC APIdefgen_password(name:str)->str:""":param name: the name of a user :returns: a random **password** """password=[str(x)forxin_generate_password(name)]return"".join(password)# TESTING STUFFdef_print_password(name:str)->None:print(gen_password(name))def__print_test_suite()->None:fornin['Леонид','Настя','Юра']:print(n)print("n=%d, q=%d"%(len(n),len(n)%6))forn_in[n]*5:_print_password(n_)print()# ENTRY POINTif__name__=='__main__':iflen(sys.argv)>1:ifsys.argv[1]=="--test":__print_test_suite()else:_print_password(sys.argv[1])else:_print_password(input("Введите Ваше имя: "))