Python 3.0 里 用reversed没有反应的?检查了一模一样

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

Ryunosuke

2017-10-19

Pycharm Python 3.6版本 正向迭代也是在输出的时候会有多余的小数点http://img1.sycdn.imooc.com/szimg/59e855ea000141da02120154.jpg,反向迭代就没有反应

写回答

1回答

Arya_Stark

2017-11-05

多余位数是浮点数计算的问题,所有的语言都有这样的问题,可以做保留位数处理,反向迭代和正向迭代差别不大,照课程里面写个reversed方法即可

# -*- coding:utf-8 -*-


class FloatRange:
    def __init__(self, start, end, step=0.2):
        self.start = start
        self.end = end
        self.step = step

    def __iter__(self):
        number = self.start
        while number < self.end:
            yield '%.1f' % number
            number += self.step

    def __reversed__(self):
        number = self.end
        while number > self.start:
            yield '%.1f' % number
            number -= self.step


for x in FloatRange(2.0, 6.0):
    print(x)

print('-*' * 20)
for x in reversed(FloatRange(2.0, 6.0)):
    print(x)


0
0

Python高效编程技巧实战

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

2582 学习 · 360 问题

查看课程