我是python编程新手。现在,在程序的一部分中,我想定义一个用于频率分析的类,并以漂亮的方式打印它:
Letter Occurrence Percentage
a 12 4.12%
b 7 3.15%
c 21 7.67%
... ... ...
这是我的密码:
class Analysis():
def __init__(self, sentence, freq_dict = {}):
self.sentence = sentence
self.freq_dict = freq_dict
@property
def frequency(self):
print("\t\tLetter\t\tOccurrence\t\tPrecentage")
for letter, occurrence in enumerate(self.freq_dict):
return f"\t\t{letter}\t\t{occurrence}\t\t{round(occurrence*100/len(sentence), 2)}%"
@frequency.setter
def frequency(self, sentence):
self.sentence = sentence
for letter in sentence:
freq_dict[letter] = self.sentence.count(letter)
return freq_dict
sentence = input("please enter your sentence: ").lower()
object = Analysis(sentence)
print(object.frequency())
我想在类中定义句子的输入,而不是作为全局变量
也许它可以短一点或者换几行。(我可以用collections.Counter(句子)代替字典,它返回一个元组)
您的代码中有一些错误。 下面是一些您可以做的更改
1-要在类内定义输入函数(而不是作为全局变量),可以定义一个名为get_语句的classmethod
2-您可以使用collections模块中的Counter()创建字母及其出现次数的字典。 要提取和打印结果,可以定义
extract()
实例方法(将按出现次数从高到低对结果进行排序。)
代码如下:
输出:
相关问题 更多 >
编程相关推荐