Skip to content

Commit f09abb1

Browse files
author
evgen
committed
AboutComprehension
1 parent f654b13 commit f09abb1

8 files changed

Lines changed: 90 additions & 78 deletions

python3/koans/about_comprehension.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,24 @@ def test_creating_lists_with_list_comprehensions(self):
1313

1414
comprehension = [delicacy.capitalize() for delicacy in feast]
1515

16-
self.assertEqual(__, comprehension[0])
17-
self.assertEqual(__, comprehension[2])
16+
self.assertEqual('Lambs', comprehension[0])
17+
self.assertEqual('Orangutans', comprehension[2])
1818

1919
def test_filtering_lists_with_list_comprehensions(self):
2020
feast = ['spam', 'sloths', 'orangutans', 'breakfast cereals',
2121
'fruit bats']
2222

2323
comprehension = [delicacy for delicacy in feast if len(delicacy) > 6]
2424

25-
self.assertEqual(__, len(feast))
26-
self.assertEqual(__, len(comprehension))
25+
self.assertEqual(5, len(feast))
26+
self.assertEqual(3, len(comprehension))
2727

2828
def test_unpacking_tuples_in_list_comprehensions(self):
2929
list_of_tuples = [(1, 'lumberjack'), (2, 'inquisition'), (4, 'spam')]
3030
comprehension = [ skit * number for number, skit in list_of_tuples ]
3131

32-
self.assertEqual(__, comprehension[0])
33-
self.assertEqual(__, comprehension[2])
32+
self.assertEqual('lumberjack', comprehension[0])
33+
self.assertEqual('spamspamspamspam', comprehension[2])
3434

3535
def test_double_list_comprehension(self):
3636
list_of_eggs = ['poached egg', 'fried egg']
@@ -40,13 +40,13 @@ def test_double_list_comprehension(self):
4040
comprehension = [ '{0} and {1}'.format(egg, meat) for egg in list_of_eggs for meat in list_of_meats]
4141

4242

43-
self.assertEqual(__, comprehension[0])
44-
self.assertEqual(__, len(comprehension))
43+
self.assertEqual('poached egg and lite spam', comprehension[0])
44+
self.assertEqual(6, len(comprehension))
4545

4646
def test_creating_a_set_with_set_comprehension(self):
4747
comprehension = { x for x in 'aabbbcccc'}
4848

49-
self.assertEqual(__, comprehension) # remeber that set members are unique
49+
self.assertEqual({'a', 'b', 'c'}, comprehension) # remeber that set members are unique
5050

5151
def test_creating_a_dictionary_with_dictionary_comprehension(self):
5252
dict_of_weapons = {'first': 'fear', 'second': 'surprise',
@@ -55,7 +55,7 @@ def test_creating_a_dictionary_with_dictionary_comprehension(self):
5555

5656
dict_comprehension = { k.upper(): weapon for k, weapon in dict_of_weapons.items() if weapon}
5757

58-
self.assertEqual(__, 'first' in dict_comprehension)
59-
self.assertEqual(__, 'FIRST' in dict_comprehension)
60-
self.assertEqual(__, len(dict_of_weapons))
61-
self.assertEqual(__, len(dict_comprehension))
58+
self.assertEqual(False, 'first' in dict_comprehension)
59+
self.assertEqual(True, 'FIRST' in dict_comprehension)
60+
self.assertEqual(5, len(dict_of_weapons))
61+
self.assertEqual(4, len(dict_comprehension))

python3/koans/about_control_statements.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ def test_if_then_statements(self):
1616
result = 'default value'
1717
if True:
1818
result = 'true value'
19-
self.assertEqual(__, result)
19+
self.assertEqual('true value', result)
2020

2121
def test_while_statement(self):
2222
i = 1
2323
result = 1
2424
while i <= 10:
2525
result = result * i
2626
i += 1
27-
self.assertEqual(__, result)
27+
self.assertEqual(3628800, result)
2828

2929
def test_break_statement(self):
3030
i = 1
@@ -33,7 +33,7 @@ def test_break_statement(self):
3333
if i > 10: break
3434
result = result * i
3535
i += 1
36-
self.assertEqual(__, result)
36+
self.assertEqual(3628800, result)
3737

3838
def test_continue_statement(self):
3939
i = 0
@@ -42,14 +42,14 @@ def test_continue_statement(self):
4242
i += 1
4343
if (i % 2) == 0: continue
4444
result.append(i)
45-
self.assertEqual(__, result)
45+
self.assertEqual([1,3,5,7,9], result)
4646

4747
def test_for_statement(self):
4848
phrase = ["fish", "and", "chips"]
4949
result = []
5050
for item in phrase:
5151
result.append(item.upper())
52-
self.assertEqual([__, __, __], result)
52+
self.assertEqual(["FISH", "AND", "CHIPS"], result)
5353

5454
def test_for_statement_with_tuples(self):
5555
round_table = [
@@ -62,7 +62,7 @@ def test_for_statement_with_tuples(self):
6262
for knight, answer in round_table:
6363
result.append("Contestant: '" + knight + "' Answer: '" + answer + "'")
6464

65-
text = __
65+
text = "Contestant: 'Robin' Answer: 'Blue! I mean Green!'"
6666

6767
self.assertRegexpMatches(result[2], text)
6868

python3/koans/about_exceptions.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ class MySpecialError(RuntimeError):
1010

1111
def test_exceptions_inherit_from_exception(self):
1212
mro = self.MySpecialError.mro()
13-
self.assertEqual(__, mro[1].__name__)
14-
self.assertEqual(__, mro[2].__name__)
15-
self.assertEqual(__, mro[3].__name__)
16-
self.assertEqual(__, mro[4].__name__)
13+
self.assertEqual('RuntimeError', mro[1].__name__)
14+
self.assertEqual('Exception', mro[2].__name__)
15+
self.assertEqual('BaseException', mro[3].__name__)
16+
self.assertEqual('object', mro[4].__name__)
1717

1818
def test_try_clause(self):
1919
result = None
@@ -24,15 +24,15 @@ def test_try_clause(self):
2424

2525
ex2 = ex
2626

27-
self.assertEqual(__, result)
27+
self.assertEqual('exception handled', result)
2828

29-
self.assertEqual(__, isinstance(ex2, Exception))
30-
self.assertEqual(__, isinstance(ex2, RuntimeError))
29+
self.assertEqual(True, isinstance(ex2, Exception))
30+
self.assertEqual(False, isinstance(ex2, RuntimeError))
3131

3232
self.assertTrue(issubclass(RuntimeError, Exception), \
3333
"RuntimeError is a subclass of Exception")
3434

35-
self.assertEqual(__, ex2.args[0])
35+
self.assertEqual('Oops', ex2.args[0])
3636

3737
def test_raising_a_specific_error(self):
3838
result = None
@@ -42,8 +42,8 @@ def test_raising_a_specific_error(self):
4242
result = 'exception handled'
4343
msg = ex.args[0]
4444

45-
self.assertEqual(__, result)
46-
self.assertEqual(__, msg)
45+
self.assertEqual('exception handled', result)
46+
self.assertEqual('My Message', msg)
4747

4848
def test_else_clause(self):
4949
result = None
@@ -55,7 +55,7 @@ def test_else_clause(self):
5555
else:
5656
result = 'no damage done'
5757

58-
self.assertEqual(__, result)
58+
self.assertEqual('no damage done', result)
5959

6060

6161
def test_finally_clause(self):
@@ -68,4 +68,4 @@ def test_finally_clause(self):
6868
finally:
6969
result = 'always run'
7070

71-
self.assertEqual(__, result)
71+
self.assertEqual('always run', result)

python3/koans/about_iteration.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@ def test_iterators_are_a_type(self):
1313
for num in it:
1414
fib += num
1515

16-
self.assertEqual(__ , fib)
16+
self.assertEqual(15, fib)
1717

1818
def test_iterating_with_next(self):
1919
stages = iter(['alpha','beta','gamma'])
2020

2121
try:
22-
self.assertEqual(__, next(stages))
22+
self.assertEqual('alpha', next(stages))
2323
next(stages)
24-
self.assertEqual(__, next(stages))
24+
self.assertEqual('gamma', next(stages))
2525
next(stages)
2626
except StopIteration as ex:
2727
err_msg = 'Ran out of iterations'
2828

29-
self.assertRegexpMatches(err_msg, __)
29+
self.assertRegexpMatches(err_msg, 'Ran out of iterations')
3030

3131
# ------------------------------------------------------------------
3232

@@ -40,14 +40,14 @@ def test_map_transforms_elements_of_a_list(self):
4040
mapping = map(self.add_ten, seq)
4141

4242
self.assertNotEqual(list, mapping.__class__)
43-
self.assertEqual(__, mapping.__class__)
43+
self.assertEqual(map, mapping.__class__)
4444
# In Python 3 built in iterator funcs return iteratable view objects
4545
# instead of lists
4646

4747
for item in mapping:
4848
mapped_seq.append(item)
4949

50-
self.assertEqual(__, mapped_seq)
50+
self.assertEqual([11, 12, 13], mapped_seq)
5151

5252
# None, iterator methods actually return objects of iter type in
5353
# python 3. In python 2 map() would give you a list.
@@ -62,7 +62,7 @@ def is_even(item):
6262
for item in filter(is_even, seq):
6363
even_numbers.append(item)
6464

65-
self.assertEqual(__, even_numbers)
65+
self.assertEqual([2, 4, 6], even_numbers)
6666

6767
def test_just_return_first_item_found(self):
6868
def is_big_name(item):
@@ -77,7 +77,7 @@ def is_big_name(item):
7777
except StopIteration:
7878
msg = 'Ran out of big names'
7979

80-
self.assertEqual(__, name)
80+
self.assertEqual("Clarence", name)
8181

8282

8383
# ------------------------------------------------------------------
@@ -94,13 +94,13 @@ def test_reduce_will_blow_your_mind(self):
9494
# to the functools module.
9595

9696
result = functools.reduce(self.add, [2, 3, 4])
97-
self.assertEqual(__, result.__class__)
97+
self.assertEqual("<class 'int'>", str(result.__class__))
9898
# Reduce() syntax is same as Python 2
9999

100-
self.assertEqual(__, result)
100+
self.assertEqual(9, result)
101101

102102
result2 = functools.reduce(self.multiply, [2, 3, 4], 1)
103-
self.assertEqual(__, result2)
103+
self.assertEqual(24, result2)
104104

105105
# Extra Credit:
106106
# Describe in your own words what reduce does.
@@ -111,14 +111,14 @@ def test_use_pass_for_iterations_with_no_body(self):
111111
for num in range(1,5):
112112
pass
113113

114-
self.assertEqual(__, num)
114+
self.assertEqual(4, num)
115115

116116
# ------------------------------------------------------------------
117117

118118
def test_all_iteration_methods_work_on_any_sequence_not_just_lists(self):
119119
# Ranges are an iteratable sequence
120120
result = map(self.add_ten, range(1,4))
121-
self.assertEqual(__, list(result))
121+
self.assertEqual([11,12,13], list(result))
122122

123123
try:
124124
file = open("example_file.txt")
@@ -127,7 +127,7 @@ def test_all_iteration_methods_work_on_any_sequence_not_just_lists(self):
127127
def make_upcase(line):
128128
return line.strip().upper()
129129
upcase_lines = map(make_upcase, file.readlines())
130-
self.assertEqual(__, list(upcase_lines))
130+
self.assertEqual(['THIS', 'IS', 'A', 'TEST'], list(upcase_lines))
131131
finally:
132132
# Arg, this is ugly.
133133
# We will figure out how to fix this later.

python3/koans/about_sets.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,46 +9,46 @@ def test_sets_make_keep_lists_unique(self):
99

1010
there_can_only_be_only_one = set(highlanders)
1111

12-
self.assertEqual(__, there_can_only_be_only_one)
12+
self.assertEqual({'Malcolm', 'Matunas', 'MacLeod','Ramirez'}, there_can_only_be_only_one)
1313

1414
def test_empty_sets_have_different_syntax_to_populated_sets(self):
15-
self.assertEqual(__, {1, 2, 3})
16-
self.assertEqual(__, set())
15+
self.assertEqual({1,2,3}, {1, 2, 3})
16+
self.assertEqual(set(), set())
1717

1818
def test_dictionaries_and_sets_use_same_curly_braces(self):
1919
# Note: Sets have only started using braces since Python 3
2020

21-
self.assertEqual(__, {1, 2, 3}.__class__)
22-
self.assertEqual(__, {'one': 1, 'two': 2}.__class__)
21+
self.assertEqual("<class 'set'>", str({1, 2, 3}.__class__))
22+
self.assertEqual("<class 'dict'>", str({'one': 1, 'two': 2}.__class__))
2323

24-
self.assertEqual(__, {}.__class__)
24+
self.assertEqual("<class 'dict'>", str({}.__class__))
2525

2626
def test_creating_sets_using_strings(self):
27-
self.assertEqual(__, {'12345'})
28-
self.assertEqual(__, set('12345'))
27+
self.assertEqual({'12345'}, {'12345'})
28+
self.assertEqual(set('12345'), set('12345'))
2929

3030
def test_convert_the_set_into_a_list_to_sort_it(self):
31-
self.assertEqual(__, sorted(set('12345')))
31+
self.assertEqual(['1', '2', '3', '4', '5'], sorted(set('12345')))
3232

3333
# ------------------------------------------------------------------
3434

3535
def test_set_have_arithmetic_operators(self):
3636
scotsmen = {'MacLeod', 'Wallace', 'Willie'}
3737
warriors = {'MacLeod', 'Wallace', 'Leonidas'}
3838

39-
self.assertEqual(__, scotsmen - warriors)
40-
self.assertEqual(__, scotsmen | warriors)
41-
self.assertEqual(__, scotsmen & warriors)
42-
self.assertEqual(__, scotsmen ^ warriors)
39+
self.assertEqual({'Willie'}, scotsmen - warriors)
40+
self.assertEqual({'Leonidas', 'MacLeod', 'Wallace', 'Willie'}, scotsmen | warriors)
41+
self.assertEqual({'MacLeod', 'Wallace'}, scotsmen & warriors)
42+
self.assertEqual({'Leonidas', 'Willie'}, scotsmen ^ warriors)
4343

4444
# ------------------------------------------------------------------
4545

4646
def test_we_can_query_set_membership(self):
47-
self.assertEqual(__, 127 in {127, 0, 0, 1} )
48-
self.assertEqual(__, 'cow' not in set('apocalypse now') )
47+
self.assertEqual(True, 127 in {127, 0, 0, 1} )
48+
self.assertEqual(True, 'cow' not in set('apocalypse now') )
4949

5050
def test_we_can_compare_subsets(self):
51-
self.assertEqual(__, set('cake') <= set('cherry cake'))
52-
self.assertEqual(__, set('cake').issubset(set('cherry cake')) )
51+
self.assertEqual(True, set('cake') <= set('cherry cake'))
52+
self.assertEqual(True, set('cake').issubset(set('cherry cake')) )
5353

54-
self.assertEqual(__, set('cake') > set('pie'))
54+
self.assertEqual(False, set('cake') > set('pie'))

python3/koans/about_triangle_project2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class AboutTriangleProject2(Koan):
1111
# Let's handle that part now.
1212
def test_illegal_triangles_throw_exceptions(self):
1313
with self.assertRaises(TriangleError):
14-
triangle(0, 0, 0)
14+
triangle(0,0,0)
1515

1616
with self.assertRaises(TriangleError):
1717
triangle(3, 4, -5)

python3/koans/about_true_and_false.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,28 @@ def truth_value(self, condition):
1111
return 'false stuff'
1212

1313
def test_true_is_treated_as_true(self):
14-
self.assertEqual(__, self.truth_value(True))
14+
self.assertEqual('true stuff', self.truth_value(True))
1515

1616
def test_false_is_treated_as_false(self):
17-
self.assertEqual(__, self.truth_value(False))
17+
self.assertEqual('false stuff', self.truth_value(False))
1818

1919
def test_none_is_treated_as_false(self):
20-
self.assertEqual(__, self.truth_value(None))
20+
self.assertEqual('false stuff', self.truth_value(None))
2121

2222
def test_zero_is_treated_as_false(self):
23-
self.assertEqual(__, self.truth_value(0))
23+
self.assertEqual('false stuff', self.truth_value(0))
2424

2525
def test_empty_collections_are_treated_as_false(self):
26-
self.assertEqual(__, self.truth_value([]))
27-
self.assertEqual(__, self.truth_value(()))
28-
self.assertEqual(__, self.truth_value({}))
29-
self.assertEqual(__, self.truth_value(set()))
26+
self.assertEqual('false stuff', self.truth_value([]))
27+
self.assertEqual('false stuff', self.truth_value(()))
28+
self.assertEqual('false stuff', self.truth_value({}))
29+
self.assertEqual('false stuff', self.truth_value(set()))
3030

3131
def test_blank_strings_are_treated_as_false(self):
32-
self.assertEqual(__, self.truth_value(""))
32+
self.assertEqual('false stuff', self.truth_value(""))
3333

3434
def test_everything_else_is_treated_as_true(self):
35-
self.assertEqual(__, self.truth_value(1))
36-
self.assertEqual(__, self.truth_value(1,))
37-
self.assertEqual(__, self.truth_value("Python is named after Monty Python"))
38-
self.assertEqual(__, self.truth_value(' '))
35+
self.assertEqual('true stuff', self.truth_value(1))
36+
self.assertEqual('true stuff', self.truth_value(1,))
37+
self.assertEqual('true stuff', self.truth_value("Python is named after Monty Python"))
38+
self.assertEqual('true stuff', self.truth_value(' '))

0 commit comments

Comments
 (0)