import random
import string
def password_generate_advance(len_of_pass):
with_one_upper_lower_number_pun = random.sample(string.ascii_lowercase , 1) + random.sample(string.digits , 1) + random.sample(string.ascii_uppercase , 1) + random.sample('%$#@!&' , 1)
strs = string.ascii_letters + string.digits + '%$#@!&'
listpass = random.sample(strs+strs , len_of_pass - 4) + with_one_upper_lower_number_pun
result = ''.join(random.sample(listpass , len(listpass))) #shuffle
return result
print(password_generate_advance(8))
print(password_generate_advance(24))