input: Write a python function to compute line statistics including line length, longest word length, shortest word length, and average word length from a given string.
  assert compute_line_statistics('The quick brown fox jumps over the lazy dog.') == {'line_length': 44, 'longest_word_length': 5, 'shortest_word_length': 3, 'average_word_length': 4.888888888888889}
  assert compute_line_statistics('Hello world!') == {'line_length': 12, 'longest_word_length': 5, 'shortest_word_length': 5, 'average_word_length': 6.0}
  assert compute_line_statistics('Python programming') == {'line_length': 18, 'longest_word_length': 11, 'shortest_word_length': 6, 'average_word_length': 9.0}
output: def compute_line_statistics(s):
      words = s.split()
      line_length = len(s)
      longest_word_length = max(len(word) for word in words)
      shortest_word_length = min(len(word) for word in words)
      average_word_length = sum(len(word) for word in words) / len(words)
      return {
          'line_length': line_length,
          'longest_word_length': longest_word_length,
          'shortest_word_length': shortest_word_length,
          'average_word_length': average_word_length
      }