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
方法对不起,第一个是构造函数