curriculum/challenges/english/blocks/daily-coding-challenges-python/68b06e589bf227324381476f.md
Given a paragraph, return an array of the three most frequently occurring words.
Hello and hello as the same word.,), periods (.), and exclamation points (!).get_words("Coding in Python is fun because coding Python allows for coding in Python easily while coding") should return ["coding", "python", "in"].
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_words("Coding in Python is fun because coding Python allows for coding in Python easily while coding"), ["coding", "python", "in"])`)
}})
get_words("I like coding. I like testing. I love debugging!") should return ["i", "like", "coding"].
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_words("I like coding. I like testing. I love debugging!"), ["i", "like", "coding"])`)
}})
get_words("Debug, test, deploy. Debug, debug, test, deploy. Debug, test, test, deploy!") should return ["debug", "test", "deploy"].
({test: () => { runPython(`
from unittest import TestCase
TestCase().assertEqual(get_words("Debug, test, deploy. Debug, debug, test, deploy. Debug, test, test, deploy!"), ["debug", "test", "deploy"])`)
}})
def get_words(paragraph):
return paragraph
import re
def get_words(paragraph):
cleaned = re.sub(r'[.,?]', '', paragraph.lower())
words = cleaned.split()
freq = {}
for word in words:
freq[word] = freq.get(word, 0) + 1
sorted_words = sorted(freq.keys(), key=lambda w: freq[w], reverse=True)
return sorted_words[:3]