# author: Roy.G
# a=[2*i  for i in range(10)] #this is a list
# a=print(a)
# b=(2*i  for i in range(1000)) #this is a ganerator
# # print(b)
# # for i in b:
# #     print(i)
# a=0
# #
# for i in b:
#     print(i)
#     a=a+1
#     print(a)
#     if a>3:
#         break
# print(b.__next__())
# print(b.__next__())
# print(b.__next__())
# print(b.__next__())
# print(b.__next__())
# print(b.__next__())
# # print(b.__next__())
def fib(max):  #fibonacci series
    n,a,b=0,0,1
    while n<max:
        # print(b)
        yield b   # yield interrupt zhe function and out put data orderly
        t=[b,a+b]
        a=t[0]
        b=t[1]
        # a1=b
        # b=a+b
        # a=a1
        # a,b=b,a+b
        n=n+1
    return "done!"
# print(fib(9))
# for i in fib(10):
#     print(i)
# print("-----")
f=fib(10)
print("===>next(f)",next(f))
print("===>next(f)",next(f))
print("===>next(f)",next(f))
print("===>next(f)",next(f))
print("===>next(f)",next(f))
print("===>next(f)",next(f))
print("===>next(f)",next(f))
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
# print(f.__next__())
print("===============wrong way==every time of printing fib ,means restart fib again,so outpu is 1 every time===============")
# print(fib(100).__next__())  #every time of printing fib ,means restart fib again,so outpu is 1 every time
# print(fib(100).__next__())
# print(fib(100).__next__())
# print(fib(100).__next__())
# print(fib(100).__next__())
while True:
    try:
        x=next(f)
        print("f_next",x)
    except StopIteration as e:
        print("generator return value:",e.value)
        break