у вас есть несколько ошибок в вашем коде. Вот пара изменений, которые вы можете сделать.
1- чтобы определить функцию ввода внутри класса (не как глобальную переменную), вы можете определить метод класса с именем get_sentence
2 - Вы можете использовать Counter () из модуля коллекций, чтобы составить словарь букв и их вхождений. чтобы извлечь и распечатать результат, вы можете определить extract()
метод экземпляра.
(результат будет отсортирован по наибольшему вхождению по наименьшему.)
код будет быть таким:
from collections import Counter
class Analysis():
def __init__(self, sentence):
self.sentence = sentence
def extract(self):
print("\n\t\tLetter\t\tOccurrence\t\tPrecentage")
print(f"\t\t {'-' * 39}")
sorted_f = sorted(Counter(self.sentence).items(), key = lambda kv: kv[1], reverse=True)
for letter, occurrence in sorted_f:
print(f"\t\t {letter}\t\t\t {occurrence}\t\t\t {round(occurrence * 100 / len(self.sentence), 2)}%")
return " "
@classmethod
def get_sentence(cls):
sentence = input("Enter your sentence: ").lower().replace(" ", "")
return cls(sentence)
obj = Analysis.get_sentence()
obj.extract()
ВЫХОД:
Letter Occurrence Precentage
---------------------------------------
e 5 21.74%
n 4 17.39%
s 3 13.04%
t 3 13.04%
i 2 8.7%
o 1 4.35%
m 1 4.35%
c 1 4.35%
h 1 4.35%
p 1 4.35%
u 1 4.35%