如何用iter方法生成素数?

2024-09-23 22:18:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: 代码inselfforreturnifmaindef
2条回答

有一些小问题:

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()

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

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

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

if __name__ == "__main__":
    main()

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

相关问题 更多 >