Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用iter方法生成素数?_Python_Python 3.5 - Fatal编程技术网

Python 如何用iter方法生成素数?

Python 如何用iter方法生成素数?,python,python-3.5,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 _

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

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

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

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

if __name__ == "__main__":
    main()

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

有一些小问题:

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

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

修正压痕。这不是问题所在。我在粘贴时做了一些更改…..然后通过取消问题来修复这些更改。或者简单地说:“添加括号”^^回写(最后一次调用):文件“C:\Users\vishnu\Desktop\python practice\sample.py”,第22行,在if name==“main”:main()文件“C:\Users\vishnu\Desktop\python practice\sample.py”,第17行,在main r=primenumber(20)中TypeError:object()不接受任何参数[在0.121s内完成]太好了,所以现在您可以得到代码中错误的反馈。@Visprasad一个小提示是为什么有两个
\uuuuuuuuuuuuuu iter\uuuuuuuuu
方法对不起,第一个是构造函数