input: Write a function to compute the moving average of time-series data points based on a specified window size. If the window size exceeds the number of data points, compute the average of available points. The function should return a list of moving averages for each data point.
  assert moving_average([3, 5, 7, 2, 8, 10, 11, 65, 72, 81, 99, 100, 150], 3) == [3.0, 4.0, 5.0, 4.666666666666667, 5.666666666666667, 6.666666666666667, 9.666666666666666, 28.666666666666668, 49.333333333333336, 72.66666666666667, 84.0, 93.33333333333333, 113.33333333333333]
  assert moving_average([1, 2, 3, 4, 5], 2) == [1.0, 1.5, 2.5, 3.5, 4.5]
  assert moving_average([10], 5) == [10.0]
  assert moving_average([], 3) == []
output: def moving_average(data, window_size):
      if not data:
          return []
      moving_averages = []
      for i in range(len(data)):
          window_start = max(0, i - window_size + 1)
          window_sum = sum(data[window_start:i + 1])
          window_count = i - window_start + 1
          moving_averages.append(window_sum / window_count)
      return moving_averages