Ai
1 Star 0 Fork 2

open/Python-100-Days

forked from 阿甘/Python-100-Days 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
example15.py 1.68 KB
一键复制 编辑 原始数据 按行查看 历史
jackfrued 提交于 2019-02-13 07:38 +08:00 . 更新了文档和目录结构
"""
迭代器 - __iter__ / __next__
itertools - 生成可迭代序列的工具模块
"""
import itertools
from math import sqrt
def is_prime(num):
"""判断素数"""
for factor in range(2, int(sqrt(num)) + 1):
if num % factor == 0:
return False
return True
class PrimeIter(object):
"""素数迭代器"""
def __init__(self, min_value, max_value):
assert 2 <= min_value <= max_value
self.min_value = min_value - 1
self.max_value = max_value
def __iter__(self):
return self
def __next__(self):
self.min_value += 1
while self.min_value <= self.max_value:
if is_prime(self.min_value):
return self.min_value
self.min_value += 1
raise StopIteration()
class FibIter(object):
"""斐波那契数迭代器"""
def __init__(self, num):
self.num = num
self.a, self.b = 0, 1
self.idx = 0
def __iter__(self):
return self
def __next__(self):
if self.idx < self.num:
self.a, self.b = self.b, self.a + self.b
self.idx += 1
return self.a
raise StopIteration()
def main():
# for val in itertools.permutations('ABCD'):
# print(val)
# for val in itertools.combinations('ABCDE', 3):
# print(val)
# for val in itertools.product('黑红梅方', range(1, 14)):
# print(val)
# fib_iter = FibIter(20)
# print('===>', next(fib_iter))
# print('===>', next(fib_iter))
# for val in fib_iter:
# print(val)
prime_iter = PrimeIter(2, 100000)
for val in prime_iter:
print(val)
if __name__ == '__main__':
main()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
HTML
1
https://gitee.com/netb/Python-100-Days.git
git@gitee.com:netb/Python-100-Days.git
netb
Python-100-Days
Python-100-Days
master

搜索帮助