Skip to content

Commit b242333

Browse files
committed
fixed more
1 parent 16ebbf2 commit b242333

9 files changed

Lines changed: 131 additions & 96 deletions

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) # remember that set members are unique
49+
self.assertEqual({'a', 'b', 'c'}, comprehension) # remember 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))

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.__name__, mro[1].__name__)
14+
self.assertEqual(Exception.__name__, mro[2].__name__)
15+
self.assertEqual(BaseException.__name__, mro[3].__name__)
16+
self.assertEqual(object.__name__, 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)

koans/about_generators.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def test_generating_values_on_the_fly(self):
1919
for bacon in bacon_generator:
2020
result.append(bacon)
2121

22-
self.assertEqual(__, result)
22+
self.assertEqual(['crunchy bacon', 'veggie bacon', 'danish bacon'], result)
2323

2424
def test_generators_are_different_to_list_comprehensions(self):
2525
num_list = [x*2 for x in range(1,3)]
@@ -28,9 +28,9 @@ def test_generators_are_different_to_list_comprehensions(self):
2828
self.assertEqual(2, num_list[0])
2929

3030
# A generator has to be iterated through.
31-
with self.assertRaises(___): num = num_generator[0]
31+
with self.assertRaises(TypeError): num = num_generator[0]
3232

33-
self.assertEqual(__, list(num_generator)[0])
33+
self.assertEqual(2, list(num_generator)[0])
3434

3535
# Both list comprehensions and generators can be iterated though. However, a generator
3636
# function is only called on the first iteration. The values are generated on the fly
@@ -44,8 +44,8 @@ def test_generator_expressions_are_a_one_shot_deal(self):
4444
attempt1 = list(dynamite)
4545
attempt2 = list(dynamite)
4646

47-
self.assertEqual(__, attempt1)
48-
self.assertEqual(__, attempt2)
47+
self.assertEqual(['Boom!', 'Boom!', 'Boom!'], attempt1)
48+
self.assertEqual([], attempt2)
4949

5050
# ------------------------------------------------------------------
5151

@@ -59,12 +59,12 @@ def test_generator_method_will_yield_values_during_iteration(self):
5959
result = list()
6060
for item in self.simple_generator_method():
6161
result.append(item)
62-
self.assertEqual(__, result)
62+
self.assertEqual(['peanut', 'butter', 'and', 'jelly'], result)
6363

6464
def test_generators_can_be_manually_iterated_and_closed(self):
6565
result = self.simple_generator_method()
66-
self.assertEqual(__, next(result))
67-
self.assertEqual(__, next(result))
66+
self.assertEqual('peanut', next(result))
67+
self.assertEqual('butter', next(result))
6868
result.close()
6969

7070
# ------------------------------------------------------------------
@@ -75,7 +75,7 @@ def square_me(self, seq):
7575

7676
def test_generator_method_with_parameter(self):
7777
result = self.square_me(range(2,5))
78-
self.assertEqual(__, list(result))
78+
self.assertEqual([4, 9, 16], list(result))
7979

8080
# ------------------------------------------------------------------
8181

@@ -88,7 +88,7 @@ def sum_it(self, seq):
8888

8989
def test_generator_keeps_track_of_local_variables(self):
9090
result = self.sum_it(range(2,5))
91-
self.assertEqual(__, list(result))
91+
self.assertEqual([2, 5, 9], list(result))
9292

9393
# ------------------------------------------------------------------
9494

@@ -106,15 +106,15 @@ def test_generators_can_act_as_coroutines(self):
106106
# section of http://www.python.org/dev/peps/pep-0342/
107107
next(generator)
108108

109-
self.assertEqual(__, generator.send(1 + 2))
109+
self.assertEqual(3, generator.send(1 + 2))
110110

111111
def test_before_sending_a_value_to_a_generator_next_must_be_called(self):
112112
generator = self.coroutine()
113113

114114
try:
115115
generator.send(1 + 2)
116116
except TypeError as ex:
117-
self.assertRegex(ex.args[0], __)
117+
self.assertRegex(ex.args[0], "can't send non-None")
118118

119119
# ------------------------------------------------------------------
120120

@@ -132,11 +132,11 @@ def test_generators_can_see_if_they_have_been_called_with_a_value(self):
132132

133133
generator2 = self.yield_tester()
134134
next(generator2)
135-
self.assertEqual(__, next(generator2))
135+
self.assertEqual('no value', next(generator2))
136136

137137
def test_send_none_is_equivalent_to_next(self):
138138
generator = self.yield_tester()
139139

140140
next(generator)
141141
# 'next(generator)' is exactly equivalent to 'generator.send(None)'
142-
self.assertEqual(__, generator.send(None))
142+
self.assertEqual('no value', generator.send(None))

koans/about_iteration.py

Lines changed: 16 additions & 16 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
total += num
1515

16-
self.assertEqual(__ , total)
16+
self.assertEqual(15, total)
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.assertRegex(err_msg, __)
29+
self.assertRegex(err_msg, '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 iterable 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
# Note, 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_filter_returns_all_items_matching_criterion(self):
6868
def is_big_name(item):
@@ -71,16 +71,16 @@ def is_big_name(item):
7171
names = ["Jim", "Bill", "Clarence", "Doug", "Eli", "Elizabeth"]
7272
iterator = filter(is_big_name, names)
7373

74-
self.assertEqual(__, next(iterator))
75-
self.assertEqual(__, next(iterator))
74+
self.assertEqual('Clarence', next(iterator))
75+
self.assertEqual('Elizabeth', next(iterator))
7676

7777
try:
7878
next(iterator)
7979
pass
8080
except StopIteration:
8181
msg = 'Ran out of big names'
8282

83-
self.assertEquals(__, msg)
83+
self.assertEquals('Ran out of big names', msg)
8484

8585
# ------------------------------------------------------------------
8686

@@ -96,13 +96,13 @@ def test_reduce_will_blow_your_mind(self):
9696
# to the functools module.
9797

9898
result = functools.reduce(self.add, [2, 3, 4])
99-
self.assertEqual(__, result.__class__)
99+
self.assertEqual(int, result.__class__)
100100
# Reduce() syntax is same as Python 2
101101

102-
self.assertEqual(__, result)
102+
self.assertEqual(9, result)
103103

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

107107
# Extra Credit:
108108
# Describe in your own words what reduce does.
@@ -113,20 +113,20 @@ def test_use_pass_for_iterations_with_no_body(self):
113113
for num in range(1,5):
114114
pass
115115

116-
self.assertEqual(__, num)
116+
self.assertEqual(4, num)
117117

118118
# ------------------------------------------------------------------
119119

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

125125
def test_lines_in_a_file_are_iterable_sequences_too(self):
126126
def make_upcase(line):
127127
return line.strip().title()
128128

129129
file = open("example_file.txt")
130130
upcase_lines = map(make_upcase, file.readlines())
131-
self.assertEqual(__, list(upcase_lines))
131+
self.assertEqual(['This', 'Is', 'A', 'Test'], list(upcase_lines))
132132
file.close()

koans/about_lambdas.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
class AboutLambdas(Koan):
1111
def test_lambdas_can_be_assigned_to_variables_and_called_explicitly(self):
1212
add_one = lambda n: n + 1
13-
self.assertEqual(__, add_one(10))
13+
self.assertEqual(11, add_one(10))
1414

1515
# ------------------------------------------------------------------
1616

@@ -21,8 +21,8 @@ def test_accessing_lambda_via_assignment(self):
2121
sausages = self.make_order('sausage')
2222
eggs = self.make_order('egg')
2323

24-
self.assertEqual(__, sausages(3))
25-
self.assertEqual(__, eggs(2))
24+
self.assertEqual('3 sausages', sausages(3))
25+
self.assertEqual('2 eggs', eggs(2))
2626

2727
def test_accessing_lambda_without_assignment(self):
28-
self.assertEqual(__, self.make_order('spam')(39823))
28+
self.assertEqual('39823 spams', self.make_order('spam')(39823))

koans/about_scoring_project.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env python
22
# -*- coding: utf-8 -*-
3+
from collections import Counter
34

45
from runner.koan import *
56

@@ -33,8 +34,24 @@
3334
# Your goal is to write the score method.
3435

3536
def score(dice):
36-
# You need to write this method
37-
pass
37+
dictionary = Counter(dice)
38+
39+
result = 0
40+
for key, count in dictionary.items():
41+
if count >= 3:
42+
if key == 1:
43+
result += 1000 + 100 * (count - 3)
44+
else:
45+
result += 100 * key
46+
if key == 5:
47+
result += 50 * (count - 3)
48+
else:
49+
if key == 1:
50+
result += 100 * count
51+
elif key == 5:
52+
result += 50 * count
53+
54+
return result
3855

3956
class AboutScoringProject(Koan):
4057
def test_score_of_an_empty_list_is_zero(self):

0 commit comments

Comments
 (0)