Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions fib-fn.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
last_1 = 1
last_2 = 1
last_1 = 1 # define last_1 as 1
last_2 = 1 # define last_2 as 1

def next():
global last_1, last_2

next_fib = last_1 + last_2
last_1, last_2 = last_2, next_fib
next_fib = last_1 + last_2 # set the next fib as the previous two fibonaccci numbers
last_1, last_2 = last_2, next_fib # define last_1 as last_2, and set last_2 as next_fib

return next_fib
return next_fib # print out the last_fib number

print next()
print next()
Expand Down
2 changes: 1 addition & 1 deletion fib_iter/example.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fib

for n, i in zip(range(3), fib.fib()):
for n, i in zip(range(5), fib.fib()):
print i

# additional questions to address:
Expand Down
4 changes: 2 additions & 2 deletions iter_bug/fib.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ def __init__(self):
self.last_1 = 1
self.last_2 = 1

def __iter__(self):
def __iter__(self):
return self

def next(self):
next_fib = self.last_1 + self.last_2
self.last_1, self.last2 = self.last_2, next_fib
self.last_1, self.last_2 = self.last_2, next_fib
return next_fib
31 changes: 21 additions & 10 deletions iter_bug/test.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,33 @@
import fib

#class fib(object):
# def __init__(self):
# self.last_1 = 1
# self.last_2 = 1

# def __iter__(self):
# return self

# def next(self):
# next_fib = self.last_1 + self.last_2
# self.last_1, self.last2 = self.last_2, next_fib
# return next_fib


def test1():
f = fib.fib()
i = iter(f)
assert i.next() == 2
assert f.next() == 2

def test2():
f = fib.fib()
i = iter(f)
i.next()
assert i.next() == 3
f.next()
assert f.next() == 3

def test2():
def test3():
f = fib.fib()
i = iter(f)
i.next()
i.next()
assert i.next() == 5
f.next()
f.next()
assert f.next() == 5

test1()
test2()
Expand Down
1 change: 1 addition & 0 deletions series_gen/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ def adder():
while 1:
n += 1
yield n

10 changes: 5 additions & 5 deletions series_iter/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
# obeys the iterator protocol.

class adder(object):
def __init__(self):
self.n = 0
def __init__(self): # creates instance of adder class
self.n = 0 # sets the n value to 0 for

def __iter__(self):
return self
return self # returns value of self

def next(self):
self.n += 1
def next(self): # defines what happens when iterator happens
self.n += 1 # ADD 1 to n
return self.n
8 changes: 4 additions & 4 deletions series_mod/series.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# this is an implementation of the 'series' functionality using a module.

n = 0
n = 0 # n = 0

def add_one():
global n
n = n + 1
return n
global n # pull the n value
n = n + 1 # add 1 to the n
return n # return n value

# additional questions to address:
# - what does 'global' do, above?
Expand Down
1 change: 1 addition & 0 deletions sieve-fn.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ def next():

for n in range(10):
print next()

4 changes: 4 additions & 0 deletions sieve_gen/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sieve

for n,i in zip(range(10), sieve.sieve()):
print i
21 changes: 21 additions & 0 deletions sieve_gen/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# a generator implementation of Eratosthenes' Sieve:
# http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

def _is_prime(primes, n):
for i in primes:
if n % i == 0:
return False
return True

def sieve():
_primeslist = [2]
start = _primeslist[-1] + 1

while 1:
if _is_prime(_primeslist, start):
_primeslist.append(start)
yield start

start += 1


8 changes: 8 additions & 0 deletions sieve_gen/test1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

for n, i in zip(range(10), sieve.sieve()):
print i

assert i == 31

print "Test 1 Worked!"
8 changes: 8 additions & 0 deletions sieve_gen/test2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

for n, i in zip(range(1), sieve.sieve()):
print i

assert i == 3

print "Test 2 Worked!"
8 changes: 8 additions & 0 deletions sieve_gen/test3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

for n, i in zip(range(30), sieve.sieve()):
print i

assert i == 127

print "Test 3 Worked!"
4 changes: 4 additions & 0 deletions sieve_iter/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sieve

for n, i in zip(range(10), sieve.sieve()):
print i
24 changes: 24 additions & 0 deletions sieve_iter/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# an iterative implementation of Eratosthenes' Sieve:
# http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes


def _is_prime(primes, n):
for i in primes:
if n % i == 0:
return False
return True

class sieve(object):
def __init__(self):
self._primeslist = [2]

def __iter__(self):
return self

def next(self):
start = self._primeslist[-1] + 1
while 1:
if _is_prime(self._primeslist, start):
self._primeslist.append(start)
return start
start += 1
8 changes: 8 additions & 0 deletions sieve_iter/test1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

for n, i in zip(range(10), sieve.sieve()):
print i

assert i == 31

print "Test 1 Worked!"
8 changes: 8 additions & 0 deletions sieve_iter/test2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

for n, i in zip(range(1), sieve.sieve()):
print i

assert i == 3

print "Test 2 Worked!"
8 changes: 8 additions & 0 deletions sieve_iter/test3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sieve

for n, i in zip(range(30), sieve.sieve()):
print i

assert i == 127

print "Test 3 Worked!"
5 changes: 5 additions & 0 deletions sieve_mod/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import sieve


for n in range(10):
print sieve.next()
5 changes: 5 additions & 0 deletions sieve_mod/example.py~
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import sieve


for n in range(10):
print next()
21 changes: 21 additions & 0 deletions sieve_mod/sieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# an implementation of Eratosthenes' Sieve:
# http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

_primeslist = [2]

def _is_prime(primes, n):
for i in primes:
if n % i == 0:
return False
return True

def next():
start = _primeslist[-1] + 1
while 1:
if _is_prime(_primeslist, start):
_primeslist.append(start)
return start

start += 1


Binary file added sieve_mod/sieve.pyc
Binary file not shown.
23 changes: 23 additions & 0 deletions sieve_mod/sieve.py~
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# an implementation of Eratosthenes' Sieve:
# http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

_primeslist = [2]

def _is_prime(primes, n):
for i in primes:
if n % i == 0:
return False
return True

def next():
start = _primeslist[-1] + 1
while 1:
if _is_prime(_primeslist, start):
_primeslist.append(start)
return start

start += 1

for n in range(10):
print next()