class FloatRange: def __init__(self, start, stop, step=1.0): if start >= stop: raise ValueError("Rango invalido") self.start = start self.stop = stop self.step = step def __iter__(self): n = self.start while n < self.stop: yield n n += self.step def __reversed__(self): n = self.stop - self.step while n >= self.start: yield n n -= self.step for number in FloatRange(0.0, 5.0, 0.5): print(number)