【问题标题】:simple Iteration on pythonpython上的简单迭代
【发布时间】:2023-04-01 20:00:02
【问题描述】:

我的目标是编写一个类并仅使用__iter__next 方法来查找数字的除数。这是我写的:

class Divisors(object):
    def __init__(self, integer):
        self.integer = integer
    def __iter__(self):
        self.divisor = 1
        return self
    def next(self):
        div = 0
        if self.divisor >= self.integer:
            raise StopIteration
        else:
            if self.integer % self.divisor == 0:
                div = self.divisor
            self.divisor += 1
        return div

当我检查时:

for i in Divisors(6):
    print i

我明白了

1
2
3
0
0

而不是1 2 3 6

但我不确定是否应该使用 print 代替上面使用的 div。关于我在这里做错了什么的任何提示?

【问题讨论】:

  • 与您的问题无关,但Divisors 真的 不应该是一个类。作为一个函数,它会更有意义。
  • 为什么 4 是 6 的除数?
  • 阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 了解调试代码的一些技巧。
  • @chrisz 错字抱歉,已编辑。谢谢你的评论。
  • @Aran-Fey 谢谢,但实际上重点是我明天有一个测试,它会涵盖类和方法,所以我试图想一些我可以练习的简单示例。跨度>

标签:
python
python-2.7
loops
methods