count: résolution de l'exercice

This commit is contained in:
Cacahuete 2020-12-07 23:11:38 +01:00
parent fc52fe0fda
commit 93a8cc169e
2 changed files with 57 additions and 0 deletions

20
count/count.py Normal file
View 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
View 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)