请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

返回值None None 3 None 5 ...怎么去掉none

class PrimeNumbersIterator(Iterator):
    def __init__(self,start,end):
        self.start = start-1
        self.end = end

    def IsPrimeNumbers(self,k):
        if k <= 2:
            return False
        x = int(math.sqrt(k))+1
        for i in xrange(2,x):
            if k%i == 0:
                return False
        return True       
        
    def next(self):
        if self.start >= self.end:
            raise StopIteration
        else:
            self.start+=1 
            if self.IsPrimeNumbers(self.start) == True:
                return self.start

class PrimeNumbersIterable(Iterable):
    def __init__(self,start,end):
        self.start = start 
        self.end = end
    
    def __iter__(self):
        return PrimeNumbersIterator(self.start,self.end)

t = PrimeNumbersIterable(1,20)
for i in t:
    print i,


正在回答 回答被采纳积分+3

1回答

程序员硕 2016-11-05 21:26:27

next方法逻辑有问题, 在不是素数时返回了None.

0 回复 有任何疑惑可以回复我~
  • 提问者 慕盖茨3698359 #1
    麻烦您说下怎么修改
    想了好久了 一直存在这个bug
    还有就是self.start +=1 那,每次都是把第一个元素过滤掉,所以又在__init__ 那self.start = start -1
    回复 有任何疑惑可以回复我~ 2016-11-06 11:17:40
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号