diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c5ac87a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +books diff --git a/__init.py__ b/__init.py__ new file mode 100644 index 0000000..e69de29 diff --git a/__pycache__/stats.cpython-313.pyc b/__pycache__/stats.cpython-313.pyc new file mode 100644 index 0000000..d5fc779 Binary files /dev/null and b/__pycache__/stats.cpython-313.pyc differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..fc3f328 --- /dev/null +++ b/main.py @@ -0,0 +1,27 @@ +from stats import count_words +from stats import count_characters +from stats import sort_by_count + +def get_book_text(filepath): + with open(filepath) as f: + return f.read() + +def main(): + read_file = get_book_text("books/frankenstein.txt") + counted = count_words(read_file) + counted_chars = count_characters(read_file) + + + print("============ BOOKBOT ============") + print("Analyzing book found at books/frankenstein.txt...\n----------- Word Count ----------") + print(f"Found {counted} total words") + print("--------- Character Count -------") + + sorted = sort_by_count(counted_chars) + for item in sorted: + if item["char"].isalpha(): + print(f"{item["char"]}: {item["num"]}") + + print("============= END ===============") + +main() diff --git a/stats.py b/stats.py new file mode 100644 index 0000000..8230a1b --- /dev/null +++ b/stats.py @@ -0,0 +1,26 @@ +def count_words(text): + return len(text.split()) + +def count_characters(text): + t = dict() + text = text.lower() + for c in text: + if c in t.keys(): + t[c] += 1 + else: + t.update({c:1}) + + return t + + +def sort_on(items): + return items["num"] + +def sort_by_count(data): + l = [] + + for c in data: + l.append({"char":c, "num":data[c]}) + + l.sort(reverse=True, key=sort_on) + return l