input: Write a function to encrypt a message using a Caesar cipher, where each character in the message is shifted by a specified number of positions in the ASCII table. If the shifted character exceeds the printable ASCII range (32-126), it should wrap around within this range. If the message is empty or contains non-printable characters, the function should return the original message.
  def caesar_encrypt(message, shift):
      if not message or not message.isprintable():
          return message
      encrypted_message = ""
      for c in message:
          encrypted_c = ord(c) + shift
          if encrypted_c > 126:
              encrypted_c = (encrypted_c - 126) + 31
          encrypted_message += chr(encrypted_c)
      return encrypted_message
  
  assert caesar_encrypt("Hello, World!", 3) == 'Khoor/#Zruog$'
  assert caesar_encrypt("abcXYZ", 20) == 'UVWxyz'
  assert caesar_encrypt("123!@#", 10) == ';,<"/)'
  assert caesar_encrypt("", 5) == ''
  assert caesar_encrypt("Special\tChar", 7) == '??2hnoh=['
output: def caesar_encrypt(message, shift):
      if not message or not message.isprintable():
          return message
      encrypted_message = ""
      for c in message:
          encrypted_c = ord(c) + shift
          if encrypted_c > 126:
              encrypted_c = (encrypted_c - 126) + 31
          encrypted_message += chr(encrypted_c)
      return encrypted_message