input: Write a function to encrypt a message using a Caesar cipher. The function should take two parameters: a message (string) and a shift (integer). The Caesar cipher shifts each character in the message by the given shift number of positions in the ASCII table. If the shifted character exceeds the printable ASCII range (32 to 126), it should wrap around to the beginning of the range. The function should return the encrypted message as a string.
  
  assert caesar_encrypt("Hello, World!", 5) == "Mjqqt,%]twqi&"
  assert caesar_encrypt("abc", 1) == "bcd"
  assert caesar_encrypt("xyz", 2) == "z{|"
  assert caesar_encrypt("!@#$%^&*()", 3) == "#$%&'()*+"
  assert caesar_encrypt("1234567890", 7) == "89:;<=>?@0"
output: def caesar_encrypt(message, shift):
      encrypted_message = []
      for char in message:
          if 32 <= ord(char) <= 126:
              new_char = chr((ord(char) - 32 + shift) % 95 + 32)
              encrypted_message.append(new_char)
          else:
              encrypted_message.append(char)
      return ''.join(encrypted_message)