From 67ef3d267ba00b838322ebd47f14a9a9679fa94f Mon Sep 17 00:00:00 2001 From: Ben Blaut Date: Thu, 17 Jan 2013 15:52:13 -0500 Subject: [PATCH 1/4] fixed the bug --- fib_iter/example.py | 1 + iter_bug/fib.py | 2 +- iter_bug/test.py | 2 +- series_gen/example.py | 10 +++++----- series_gen/series.py | 8 ++++---- series_mod/example.py | 8 ++++---- series_mod/series.py | 13 ------------- 7 files changed, 16 insertions(+), 28 deletions(-) delete mode 100644 series_mod/series.py diff --git a/fib_iter/example.py b/fib_iter/example.py index d65f288..5b689e0 100644 --- a/fib_iter/example.py +++ b/fib_iter/example.py @@ -5,3 +5,4 @@ # additional questions to address: # - what the heck do 'zip' and 'range' do, and why are they there? +# "zip" iterates over two ranges, and "range" denotes a range from 0 to the number in parentheses (0-3, so a range of 4) diff --git a/iter_bug/fib.py b/iter_bug/fib.py index 59a39a4..03e0d38 100644 --- a/iter_bug/fib.py +++ b/iter_bug/fib.py @@ -12,5 +12,5 @@ def __iter__(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 diff --git a/iter_bug/test.py b/iter_bug/test.py index db32b46..2740f33 100644 --- a/iter_bug/test.py +++ b/iter_bug/test.py @@ -11,7 +11,7 @@ def test2(): i.next() assert i.next() == 3 -def test2(): +def test3(): f = fib.fib() i = iter(f) i.next() diff --git a/series_gen/example.py b/series_gen/example.py index 62b7751..7dc39e0 100644 --- a/series_gen/example.py +++ b/series_gen/example.py @@ -1,7 +1,7 @@ -import series +import series #1 -for i in series.adder(): - print i +for i in series.adder(): #2 + print i #6 #11 #16 - if i > 2: - break + if i > 2: #7 #12 #17 + break #18 diff --git a/series_gen/series.py b/series_gen/series.py index 9c7aecf..1e101b8 100644 --- a/series_gen/series.py +++ b/series_gen/series.py @@ -2,7 +2,7 @@ # a generator. def adder(): - n = 0 - while 1: - n += 1 - yield n + n = 0 #2 + while 1: #3 #8 #13 + n += 1 #4 #9 #14 + yield n #5 #10 #15 diff --git a/series_mod/example.py b/series_mod/example.py index 7a3c464..87d4067 100644 --- a/series_mod/example.py +++ b/series_mod/example.py @@ -1,5 +1,5 @@ -import series +import series_mod -print series.add_one() -print series.add_one() -print series.add_one() +print series_mod.add_one() +print series_mod.add_one() +print series_mod.add_one() diff --git a/series_mod/series.py b/series_mod/series.py deleted file mode 100644 index 5da6adc..0000000 --- a/series_mod/series.py +++ /dev/null @@ -1,13 +0,0 @@ -# this is an implementation of the 'series' functionality using a module. - -n = 0 - -def add_one(): - global n - n = n + 1 - return n - -# additional questions to address: -# - what does 'global' do, above? -# - what naming limitations are there on series.py? Could we name it -# series_mod.py or series-mod.py, and still have it work as a module? From a0ca2fd02842ad80d51730275540c75d06df5cff Mon Sep 17 00:00:00 2001 From: Ben Blaut Date: Mon, 21 Jan 2013 14:54:10 -0500 Subject: [PATCH 2/4] finished homework --- sieve_iter/sieve_iter.py | 21 +++++++++++++++++++++ sieve_iter/sieve_iter.pyc | Bin 0 -> 1277 bytes 2 files changed, 21 insertions(+) create mode 100644 sieve_iter/sieve_iter.py create mode 100644 sieve_iter/sieve_iter.pyc diff --git a/sieve_iter/sieve_iter.py b/sieve_iter/sieve_iter.py new file mode 100644 index 0000000..0ddb36e --- /dev/null +++ b/sieve_iter/sieve_iter.py @@ -0,0 +1,21 @@ +class sieve(object): + def __init__(self): + self._primeslist = [2] + + def __iter__(self): + return self + + def _is_prime(self, primes, n): + for i in primes: + if n % i == 0: + return False + return True + + def next(self): + self.start = self._primeslist[-1] + 1 + while 1: + if self._is_prime(self._primeslist, self.start): + self._primeslist.append(self.start) + return self.start + self.start += 1 + diff --git a/sieve_iter/sieve_iter.pyc b/sieve_iter/sieve_iter.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b4080c150a2da65557d4ca16861e02e26e9c7b5a GIT binary patch literal 1277 zcmb_b&59F25U!fZCcCSV1;y1pdKy6uf*^v5=puLtG9!oqY4X!69VfHd=^lv^PpgmU zlXw>Ws(MHsz|7E9)zwwiU;T9YyMOrW=byJzYQGfx1(rVnnGso{Go~5S528z=4^rW(@a1GpF1tGq{Dc|Dj+~Z8HZ%4NpFRU>^ zP#Lp0pEV`6xl}Ee7z#J3BIfClj*2Z=DAjRJu#_1A-=aade1~uFH<(mD| MnD2AxkQX%n0DA-i3;+NC literal 0 HcmV?d00001 From 7b110b4ffd8a65add673ff0d729849c610e38f9f Mon Sep 17 00:00:00 2001 From: Ben Blaut Date: Mon, 21 Jan 2013 14:54:34 -0500 Subject: [PATCH 3/4] finished homework --- sieve_gen/sieve_gen.py | 20 ++++++++++++++++++++ sieve_gen/sieve_gen.pyc | Bin 0 -> 865 bytes sieve_gen/test.py | 7 +++++++ sieve_gen/test1.py | 9 +++++++++ sieve_gen/test2.py | 6 ++++++ sieve_gen/test3.py | 8 ++++++++ sieve_iter/test.py | 32 ++++++++++++++++++++++++++++++++ sieve_iter/test1.py | 9 +++++++++ sieve_iter/test2.py | 6 ++++++ sieve_iter/test3.py | 9 +++++++++ sieve_mod.py | 16 ++++++++++++++++ sieve_mod/sieve_mod.py | 16 ++++++++++++++++ sieve_mod/sieve_mod.pyc | Bin 0 -> 688 bytes sieve_mod/test.py | 4 ++++ 14 files changed, 142 insertions(+) create mode 100644 sieve_gen/sieve_gen.py create mode 100644 sieve_gen/sieve_gen.pyc create mode 100644 sieve_gen/test.py create mode 100644 sieve_gen/test1.py create mode 100644 sieve_gen/test2.py create mode 100644 sieve_gen/test3.py create mode 100644 sieve_iter/test.py create mode 100644 sieve_iter/test1.py create mode 100644 sieve_iter/test2.py create mode 100644 sieve_iter/test3.py create mode 100644 sieve_mod.py create mode 100644 sieve_mod/sieve_mod.py create mode 100644 sieve_mod/sieve_mod.pyc create mode 100644 sieve_mod/test.py diff --git a/sieve_gen/sieve_gen.py b/sieve_gen/sieve_gen.py new file mode 100644 index 0000000..4307112 --- /dev/null +++ b/sieve_gen/sieve_gen.py @@ -0,0 +1,20 @@ +def sieve(): + _primeslist = [2] + + while 1: + yield next(_primeslist) + +def _is_prime(primes, n): + for i in primes: + if n % i == 0: + return False + return True + +def next(_primeslist): + start = _primeslist[-1] + 1 + while 1: + if _is_prime(_primeslist, start): + _primeslist.append(start) + return start + + start += 1 diff --git a/sieve_gen/sieve_gen.pyc b/sieve_gen/sieve_gen.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c61b5317cf20f8ee2b5bfc35b0420b05c69cb24 GIT binary patch literal 865 zcmb`F-%A2P5XWck%pavzFGWEGJzWnbLJ(0zRP-pJQ4oZvx5$;6-tL8kKG}cJpW1WO zclIv(19D+!XLjeuesNIWMXRxR$~wbJ*B&WHXcl} zLLWmbM_PsDR<{|Mmg<+=S{)o!lBLv-dMy>cm35$ARHK9QnYKT8H4BKh8&XxLA&7I1 z%Wb)eo6HNWdJkf>D;K|f*rbU=W2Uh~YXEz4D9i{|eVCy;!!sU)kVUg~u9{t~EZI#M zDNnK+sThMH49Hdna|FyGYa`I{>t$f*ECg|ZS2)Y<-#*D@Eao{BFoJ3WtzDlmjY>(w z06Yb0Ma~}q50iCY3F5b1+bSKi-t%xDBQm&at&M yESF)aePj0n;e=K1=={@^VSDgx?mLHu<=h8pO->YH( literal 0 HcmV?d00001 diff --git a/sieve_gen/test.py b/sieve_gen/test.py new file mode 100644 index 0000000..8d03bd1 --- /dev/null +++ b/sieve_gen/test.py @@ -0,0 +1,7 @@ +import sieve_gen + +find = 100 +gen = sieve_gen.sieve() +for i in range(find - 1): + found = next(gen) +print found diff --git a/sieve_gen/test1.py b/sieve_gen/test1.py new file mode 100644 index 0000000..ff79d2c --- /dev/null +++ b/sieve_gen/test1.py @@ -0,0 +1,9 @@ +import sieve_gen + +for i in sieve_gen.sieve(): + print i + + if i >= 10: + break + +assert i == 11 diff --git a/sieve_gen/test2.py b/sieve_gen/test2.py new file mode 100644 index 0000000..b83c8e5 --- /dev/null +++ b/sieve_gen/test2.py @@ -0,0 +1,6 @@ +import sieve_gen + +for n, i in zip(range(10), sieve_gen.sieve()): + print i + +assert i == 31 diff --git a/sieve_gen/test3.py b/sieve_gen/test3.py new file mode 100644 index 0000000..f21eb60 --- /dev/null +++ b/sieve_gen/test3.py @@ -0,0 +1,8 @@ +import sieve_gen + +find = 100 +gen = sieve_gen.sieve() +for i in range(find - 1): + found = next(gen) +print found +assert found == 541 diff --git a/sieve_iter/test.py b/sieve_iter/test.py new file mode 100644 index 0000000..84a32f4 --- /dev/null +++ b/sieve_iter/test.py @@ -0,0 +1,32 @@ +import sieve_iter + +def test1(): + for i in sieve_iter.sieve(): + print i + + if i >= 10: + break + + assert i == 11 + +def test2(): + for n, i in zip(range(10), sieve_iter.sieve()): + print i + + assert i == 31 + +def test3(): + sieve = sieve_iter.sieve() + i = iter(sieve) + print i.next() + print i.next() + print i.next() + assert i.next() == 11 + + +test1() +print +test2() +print +test3() + diff --git a/sieve_iter/test1.py b/sieve_iter/test1.py new file mode 100644 index 0000000..2fc0aa5 --- /dev/null +++ b/sieve_iter/test1.py @@ -0,0 +1,9 @@ +import sieve_iter + +for i in sieve_iter.sieve(): + print i + + if i >= 10: + break + +assert i == 11 diff --git a/sieve_iter/test2.py b/sieve_iter/test2.py new file mode 100644 index 0000000..5dff059 --- /dev/null +++ b/sieve_iter/test2.py @@ -0,0 +1,6 @@ +import sieve_iter + +for n, i in zip(range(10), sieve_iter.sieve()): + print i + +assert i == 31 diff --git a/sieve_iter/test3.py b/sieve_iter/test3.py new file mode 100644 index 0000000..4b19c94 --- /dev/null +++ b/sieve_iter/test3.py @@ -0,0 +1,9 @@ +import sieve_iter + +find = 100 +sieve = sieve_iter.sieve() +i = iter(sieve) +for n in range(find - 1): + found = i.next() +print found +assert found == 541 diff --git a/sieve_mod.py b/sieve_mod.py new file mode 100644 index 0000000..2f989f2 --- /dev/null +++ b/sieve_mod.py @@ -0,0 +1,16 @@ +_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 diff --git a/sieve_mod/sieve_mod.py b/sieve_mod/sieve_mod.py new file mode 100644 index 0000000..2f989f2 --- /dev/null +++ b/sieve_mod/sieve_mod.py @@ -0,0 +1,16 @@ +_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 diff --git a/sieve_mod/sieve_mod.pyc b/sieve_mod/sieve_mod.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bdf907706a1fefbfb25030a3ec0fc852320a5784 GIT binary patch literal 688 zcmb_ZO-sW-5S>kGKh*khQS>5siia8sf`}qw#bc315DHTAvB+u~)9gm7v?u*X{xr{` zZ?=X0fiBFOx5@0zytnR8bM-s=y^CqS1o9O^9{>`fCqaD>L0?3DL5X9DLy1d)S3!+( z05O9*j}Edv0*nu7LUi-EPg92`f+h~_;HDRciW(WBU{s?ABXAKP?zavO1Dg$^Q>9IhO|cGyc`mcW<4Wt4Heq3w zXaakl$+0yxVZ9j?bOVJGUbWsBy^c?LH90*_Os@{(n09;x9ps{f;~ Bif#Y^ literal 0 HcmV?d00001 diff --git a/sieve_mod/test.py b/sieve_mod/test.py new file mode 100644 index 0000000..5a91e8b --- /dev/null +++ b/sieve_mod/test.py @@ -0,0 +1,4 @@ +import sieve_mod + +for n in range(10): + print sieve_mod.next() From 89f94ff0a74fb651292d3af940bd33038bf61eae Mon Sep 17 00:00:00 2001 From: Ben Blaut Date: Mon, 21 Jan 2013 14:55:30 -0500 Subject: [PATCH 4/4] finished homework --- sieve_gen/test.py | 7 ------- sieve_iter/test.py | 32 -------------------------------- sieve_mod.py | 16 ---------------- 3 files changed, 55 deletions(-) delete mode 100644 sieve_gen/test.py delete mode 100644 sieve_iter/test.py delete mode 100644 sieve_mod.py diff --git a/sieve_gen/test.py b/sieve_gen/test.py deleted file mode 100644 index 8d03bd1..0000000 --- a/sieve_gen/test.py +++ /dev/null @@ -1,7 +0,0 @@ -import sieve_gen - -find = 100 -gen = sieve_gen.sieve() -for i in range(find - 1): - found = next(gen) -print found diff --git a/sieve_iter/test.py b/sieve_iter/test.py deleted file mode 100644 index 84a32f4..0000000 --- a/sieve_iter/test.py +++ /dev/null @@ -1,32 +0,0 @@ -import sieve_iter - -def test1(): - for i in sieve_iter.sieve(): - print i - - if i >= 10: - break - - assert i == 11 - -def test2(): - for n, i in zip(range(10), sieve_iter.sieve()): - print i - - assert i == 31 - -def test3(): - sieve = sieve_iter.sieve() - i = iter(sieve) - print i.next() - print i.next() - print i.next() - assert i.next() == 11 - - -test1() -print -test2() -print -test3() - diff --git a/sieve_mod.py b/sieve_mod.py deleted file mode 100644 index 2f989f2..0000000 --- a/sieve_mod.py +++ /dev/null @@ -1,16 +0,0 @@ -_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