input: Write a python function to create and evaluate a neural network model using Keras.
  assert isinstance(create_and_evaluate_model(X, y), float)
  assert create_and_evaluate_model(X, y) > 0
  assert create_and_evaluate_model(X, y) <= 1
output: def create_and_evaluate_model(X, y):
      from keras.models import Sequential
      from keras.layers import Dense
      from keras.optimizers import Adam
      from keras.utils import np_utils
      from sklearn.model_selection import train_test_split
  
      # Ensure y is categorical
      y = np_utils.to_categorical(y)
  
      # Split data into training and testing sets
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  
      # Create the model
      model = Sequential()
      model.add(Dense(64, input_dim=X.shape[1], activation='relu'))
      model.add(Dense(64, activation='relu'))
      model.add(Dense(y.shape[1], activation='softmax'))
  
      # Compile the model
      model.compile(optimizer=Adam(), loss='categorical_crossentropy', metrics=['accuracy'])
  
      # Train the model
      model.fit(X_train, y_train, epochs=50, batch_size=32, verbose=0)
  
      # Evaluate the model
      loss, accuracy = model.evaluate(X_test, y_test, verbose=0)
      
      return accuracy