Math server:
from SocketServer import TCPServer, BaseRequestHandler

#class to handle connections
class MathHandler(BaseRequestHandler):
  """class to handle math query connections"""
  def handle(self):
    """function to handle requests"""

    #get request and split it to get command and numbers
    message = self.request.recv(1024)
    messageList = message.split()
    command = messageList[0]
    numList = [ float(i) for i in messageList[1:] ]

    #decide what to send back

    #send back the mean
    if command == 'MEAN':
      response = 'Mean is %f' % (sum(numList)/len(numList))

    #send back the median
    elif command == 'MEDIAN':
      numList.sort()
      response = 'Median is %f' % numList[len(numList)/2]

    #send back the mode
    elif command == 'MODE':
      d = dict()

      #use dictionary to count the number of times each entry appears
      for n in numList:
        if n not in d:
          d[n] = 1
        else:
          d[n] += 1
      #find the numbers with highest value in dictionary
      mode = numList[0]
      numOccurances = 0
      for n in d:
        if d[n] > numOccurances:
          mode = n
          numOccurances = d[n]

      response = 'Mode is %f' % mode
  
    else:
      response = 'Unknown operation ' + command
    
    self.request.send(response)
    
#main script
address = ('localhost', 9823)
mathServer = TCPServer(address, MathHandler)
mathServer.serve_forever()   

Math Client code:

from socket import socket

address = ('localhost', 9823)

numbers = raw_input('Enter a list of numbers, separated by spaces: ')
running = True

while running:
  print """
1. Calculate mean
2. Calculate median
3. Calculate mode
4. Enter a new list of numbers
5. Quit
"""
  option = raw_input('Choose: ')
  if option == '1':
    command = "MEAN"
  elif option == '2':
    command = 'MEDIAN'
  elif option == '3':
    command = 'MODE'
  elif option == '4':
    numbers = raw_input('Enter a new list of numbers, separated by spaces: $
    continue
  elif option == '5':
    running = False
    continue

  buf = command + ' ' + numbers
  connection = socket()
  connection.connect(address)
  connection.send(buf)
  print connection.recv(1024)
  connection.close()