設計一個名為 TextAnalyzer 的 Python 類,該類用於分析給定文字字串中的字元統計資訊。
類應具有以下功能:
- 初始化:類初始化時接受一個字串引數 text,並將其儲存為類的屬性。
- 字元計數:實現一個方法 count_characters(),返回一個字典,其中鍵為文字中出現的不同字元(包括空格和標點符號),值為該字元在文字中出現的次數。
- 單詞計數:實現一個方法 count_words(),返回文字中單詞的總數。假設單詞由空格分隔。
- 最常用字元:實現一個方法 most_common_char(),返回文字中出現次數最多的字元及其出現次數。如果有多個字元並列最常用,返回其中任意一個。
- 句子計數:實現一個方法 count_sentences(),基於句號(.)、問號(?)、感嘆號(!)來統計文字中句子的數量。
執行示例
text = "Hello, world! This is a test. Another sentence? Yes, indeed!"
analyzer = TextAnalyzer(text)
print(analyzer.count_characters()) # 應輸出字元計數字典
print(analyzer.count_words()) # 應輸出單詞數量,例如:6
print(analyzer.most_common_char()) # 可能輸出:{' ': 4, 's': 3} 表示空格和's'都是最常見的字元之一
print(analyzer.count_sentences()) # 應輸出句子數量,例如:3
參考答案
class TextAnalyzer:
def __init__(self, text):
self.text = text
def count_characters(self):
char_count = {}
for char in self.text:
char_count[char] = char_count.get(char, 0) + 1
return char_count
def count_words(self):
words = self.text.split()
return len(words)
def most_common_char(self):
char_freq = self.count_characters()
max_count = max(char_freq.values())
common_chars = [char for char, freq in char_freq.items() if freq == max_count]
return common_chars[0], max_count
def count_sentences(self):
sentence_enders = ['.', '?', '!']
sentences = [sent + char for char in sentence_enders for sent in self.text.split(char)]
return len(sentences) - 1 # 減1是因為最後一個句子後面沒有分隔符
# 示例使用
text = "Hello, world! This is a test. Another sentence? Yes, indeed!"
analyzer = TextAnalyzer(text)
print(analyzer.count_characters())
print(analyzer.count_words())
print(analyzer.most_common_char())
print(analyzer.count_sentences())