如何通过iter方法生成素数?

时间:2016-03-16 12:59:02

标签: python python-3.5

我有以下代码,没有显示错误,但仍然没有输出。 我需要帮助来纠正这段代码。

class primenumber:
    def __iter__(self,end):
        self._end=end

    def checkprimenumber(self,n):
        for i in range(2,n):
            if n%i==0:
                return false
        return true

    def __iter__(self):
        yield 2
        if self._end>2:
            for n in range(2,self._end):
                if checkprimenumber(n):
                    yield n
def main():
    r=primenumber(150)
    for n in r:
        print (n)

if __name__ == "__main__":main

2 个答案:

答案 0 :(得分:3)

此代码不太可能执行任何操作,因为它不调用任何方法。

在主调用中添加括号并删除if -

之前的缩进
if __name__ == "__main__":
    main()

之后,您会在代码中看到一些错误(例如缺少构造函数和没有self.的成员方法调用)

答案 1 :(得分:1)

有一些小问题:

class Primenumber(object):
    def __init__(self, end): # Init instead of __iter__ here
        self._end = end

    def checkprimenumber(self,n):
        for i in range(2,n):
            if n%i==0:
                return False
        return True

    def __iter__(self):
        yield 2
        if self._end>2:
            for n in range(2,self._end):
                if self.checkprimenumber(n): # Need to call to self.
                    yield n
def main():
    r=Primenumber(150)
    for n in r:
        print(n)

if __name__ == "__main__":
    main()

期待这两个小问题,我发现没有进一步的错误。但通常错误消息会告诉您缺少的内容,您应该能够自己修复它。 : - )