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

来源:3-4 如何进行反向迭代以及如何实现反向迭代

慕盖茨3698359

2016-11-05

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,


写回答

1回答

程序员硕

2016-11-05

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

0
1
慕盖茨3698359
麻烦您说下怎么修改 想了好久了 一直存在这个bug 还有就是self.start +=1 那,每次都是把第一个元素过滤掉,所以又在__init__ 那self.start = start -1
2016-11-06
共1条回复

Python高效编程技巧实战

精选50个Python案例,源自实战,全面提升Python编程能力

2582 学习 · 360 问题

查看课程