
def is_numeric(value):
    # Test if a value is numeric
    return isinstance(value, int) or isinstance(value, float)


class Question(object):
    def __init__(self, fields, pos, value):
        self.fields = fields
        self.pos = pos
        self.value = value
        self.numeric = is_numeric(value)

    def match(self, entry):
        val = entry.data[self.pos]

        if self.numeric:
            return val and val > self.value
        else:
            return val == self.value

    def __str__(self):
        condition = self.numeric and ">" or "="
        field = self.fields[self.pos]

        return "Is {f} {cond} {val}?".format(f=field, cond=condition, val=self.value) # noqa
