count: résolution de l'exercice
This commit is contained in:
parent
fc52fe0fda
commit
93a8cc169e
20
count/count.py
Normal file
20
count/count.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import re
|
||||
from collections import defaultdict
|
||||
|
||||
|
||||
def count_words_v1(sentence):
|
||||
count = defaultdict(int)
|
||||
for word in sentence.split():
|
||||
count[word.lower()] += 1
|
||||
return count
|
||||
|
||||
|
||||
def count_words_v2(sentence):
|
||||
regex = r"[\w|']+"
|
||||
count = defaultdict(int)
|
||||
for word in re.findall(regex, sentence):
|
||||
count[word.lower()] += 1
|
||||
return count
|
||||
|
||||
|
||||
count_words = count_words_v2
|
||||
37
count/test_count.py
Normal file
37
count/test_count.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import unittest
|
||||
|
||||
|
||||
from count import count_words
|
||||
|
||||
|
||||
class CountWordsTests(unittest.TestCase):
|
||||
|
||||
"""Tests for count_words."""
|
||||
|
||||
def test_simple_sentence(self):
|
||||
actual = count_words("oh what a day what a lovely day")
|
||||
expected = {"oh": 1, "what": 2, "a": 2, "day": 2, "lovely": 1}
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
def test_apostrophe(self):
|
||||
actual = count_words("don't stop believing")
|
||||
expected = {"don't": 1, "stop": 1, "believing": 1}
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
# To test the Bonus part of this exercise, comment out the following line
|
||||
# @unittest.expectedFailure
|
||||
def test_capitalization(self):
|
||||
actual = count_words("Oh what a day what a lovely day")
|
||||
expected = {"oh": 1, "what": 2, "a": 2, "day": 2, "lovely": 1}
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
# To test the Bonus part of this exercise, comment out the following line
|
||||
# @unittest.expectedFailure
|
||||
def test_symbols(self):
|
||||
actual = count_words("¿Te gusta Python?")
|
||||
expected = {"te": 1, "gusta": 1, "python": 1}
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main(verbosity=2)
|
||||
Loading…
Reference in a new issue