input: Write a function to generate a Random Password of length 8 characters, which contains at least one of each character type (lowercase, uppercase, digits, special characters). If the input is not applicable, return the generated password.
  
  import string
  import random
  
  def generate_password():
     length = 8
     special_characters = "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
  
     password = random.choice(string.ascii_lowercase)
     password += random.choice(string.ascii_uppercase)
     password += random.choice(string.digits)
     password += random.choice(special_characters)
  
     for i in range(length):
        password += random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits + special_characters)
  
     password  = ''.join(random.sample(password,len(password)))
     return password
  
  assert generate_password() is not None
  assert len(generate_password()) == 8
  assert any(c.isdigit() for c in generate_password())
  assert any(c.islower() for c in generate_password())
  assert any(c.isupper() for c in generate_password())
  assert any(c in "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~" for c in generate_password())
output: import string
  import random
  
  def generate_password():
     length = 8
     special_characters = "!#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
  
     password = random.choice(string.ascii_lowercase)
     password += random.choice(string.ascii_uppercase)
     password += random.choice(string.digits)
     password += random.choice(special_characters)
  
     all_chars = string.ascii_lowercase + string.ascii_uppercase + string.digits + special_characters
     password += ''.join(random.choice(all_chars) for _ in range(length - 4))
  
     password = ''.join(random.sample(password, len(password)))
     return password