forked from 4dsolutions/Python5
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsimple_gen.py
More file actions
69 lines (59 loc) · 1.29 KB
/
simple_gen.py
File metadata and controls
69 lines (59 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 3 19:13:03 2016
@author: kurner
"""
def simple_gen():
yield "white"
yield "yellow" #<---
yield "green"
yield "orange"
yield "purple"
yield "blue"
yield "brown"
yield "red"
yield "black"
def driver():
g = simple_gen()
for color in g:
print(color)
def fibs(a=0, b=1, max=10000):
while True:
if a > max:
return a
yield a
newb = a + b
a = b
b = newb
def test_fibs():
f = fibs()
while True:
try:
next(f)
except StopIteration as ev:
return ev.value
class Fibs:
"""
Another way to write an iterator
"""
def __init__(self, a=0, b=1, max=10000):
self.a = a
self.b = b
self.max = max
def __next__(self): # <-- needed for iterators
answer = self.a
newb = self.a + self.b
self.a = self.b
self.b = newb
if answer > self.max:
raise StopIteration(answer)
return answer
def __iter__(self): # <-- needed for iterators
return self
def test_Fibs():
f = Fibs()
while True:
try:
next(f)
except StopIteration as ev:
return ev.value