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