由生成器生成的可迭代对象迭代时有bug

来源:3-4 如何进行反向迭代以及如何实现反向迭代

qq_笑冰凌_04143298

2018-03-19

#coding:utf-8

class FloatRange:

    def __init__(self,start,end,step=0.1):
        self.start = start
        self.end = end
        self.step = step

    def __iter__(self):
        t = self.start
        while t <=self.end:
            yield t
            t = t + self.step


    def __reversed__(self):
        t = self.end
        while t>= self.start:
            yield t
            t = t-self.step


for x in FloatRange(1.0,3.0,0.2):
    print x


#输出结果如下,缺少3.0这个值,而改成FloatRange(1.0,2.0,0.2)时,就会输出1.0,1.2,1.4,1.6,1.8,2.0

1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8


写回答

1回答

程序员硕

2018-03-20

这是浮点数误差的问题, 可以使用decimal

0
0

Python高效编程技巧实战

精选50个Python案例,源自实战,全面提升Python编程能力

2582 学习 · 360 问题

查看课程