<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _is_num_param(names, values, to_float=False):
 """ Return numbers from inputs or raise VdtParamError. Lets ``None`` pass through. Pass in keyword argument ``to_float=True`` to use float for the conversion rather than int. [0, 1] [0.0, 1.0] Traceback (most recent call last):
 VdtParamError: passed an incorrect value "a" for parameter "a". """

    fun = to_float and float or int
    out_params = []
    for (name, val) in zip(names, values):
        if val is None:
            out_params.append(val)
        elif isinstance(val, number_or_string_types):
            try:
                out_params.append(fun(val))
            except ValueError:
                raise VdtParamError(name, val)
        else:
            raise VdtParamError(name, val)
    return out_params