project working for hard coded book

This commit is contained in:
2025-06-27 15:51:22 +02:00
parent fa8874cdbd
commit 16c1c1f5b1
5 changed files with 55 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
books

0
__init.py__ Normal file
View File

Binary file not shown.

27
main.py Normal file
View File

@@ -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()

26
stats.py Normal file
View File

@@ -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