如何通过iter方法生成素数?
How to generate prime numbers by iter method?
我有以下代码,没有显示错误,但仍然没有输出。
我需要帮助来更正此代码。
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()
除了这 2 个小问题,我没有发现进一步的错误。但通常错误消息会告诉您缺少什么,您应该能够自行修复。 :-)
我有以下代码,没有显示错误,但仍然没有输出。 我需要帮助来更正此代码。
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()
除了这 2 个小问题,我没有发现进一步的错误。但通常错误消息会告诉您缺少什么,您应该能够自行修复。 :-)