• + 3 comments

    On similar lines,

    # global variables
    num = int(raw_input())
    numbers = sorted(map(int, raw_input().split()))
    mid = len(numbers) // 2 # floor division
    
    def median(median_numbers):
        #return np.median(median_numbers) # will work if numpy import is allowed
        middle = len(median_numbers) // 2  # floor division
        if (len(median_numbers) % 2 == 0):  # even or odd
            return (median_numbers[middle-1] + median_numbers[middle]) / 2
        else:
            return median_numbers[middle]
    
        
    # actual program starts here    
    if (len(numbers) % 2 == 0):    # even or not
        Q1 = median(numbers[:mid])
        Q3 = median(numbers[mid:])
    else:
        # if odd set of numbers
        Q1 = median(numbers[:mid])
        Q3 = median(numbers[mid+1:])
    
    print Q1
    print median(numbers)
    print Q3