#coding utf-8
precision = 0.00000000001 # ensure no exception occurs of float compare operation
class FloatRange:
def __init__(self, start, end, step = 0.1) :
self.start = start
self.end = end
self.step = step
def __iter__(self) :
temp = self.start
while temp - precision <= self.end :
yield temp
temp += self.step
def __reversed__(self) :
temp = self.end
while temp - precision >= self.start :
yield temp
temp -= self.step
print('------------iter--------------')
for x in FloatRange(1, 4, 0.2) :
print('%2f'%x)
print('------------reversed--------------')
for y in reversed(FloatRange(1, 4, 0.2)) :
print('%2f'%y)
运行结果:
------------iter--------------
1.000000
1.200000
1.400000
1.600000
1.800000
2.000000
2.200000
2.400000
2.600000
2.800000
3.000000
3.200000
3.400000
3.600000
3.800000
4.000000
------------reversed--------------
4.000000
3.800000
3.600000
3.400000
3.200000
3.000000
2.800000
2.600000
2.400000
2.200000
2.000000
1.800000
1.600000
1.400000
1.200000
[Finished in 0.4s]