input: Write a function that takes in a text string and returns a dictionary of words and the number of times each word appears in the text string. The function should be case-insensitive and should ignore punctuation. If the input string is empty, the function should return an empty dictionary.
  
  def words_count(text):
      words_dict = {}
      for word in text.lower().split():
          word = ''.join(filter(str.isalnum, word))
          if word:
              if word in words_dict:
                  words_dict[word] += 1
              else:
                  words_dict[word] = 1
      return words_dict
  
  assert words_count("A quick brown fox jumps over the lazy dog.")=={'a': 1, 'quick': 1, 'brown': 1, 'fox': 1, 'jumps': 1, 'over': 1, 'the': 1, 'lazy': 1, 'dog': 1}
  assert words_count("Hello hello world!")=={'hello': 2, 'world': 1}
  assert words_count("")=={}
  assert words_count("!#This, is. a; test: of? the/ punctuation")=={'this': 1, 'is': 1, 'a': 1, 'test': 1, 'of': 1, 'the': 1, 'punctuation': 1}
output: def words_count(text):
      words_dict = {}
      for word in text.lower().split():
          word = ''.join(filter(str.isalnum, word))
          if word:
              if word in words_dict:
                  words_dict[word] += 1
              else:
                  words_dict[word] = 1
      return words_dict