编写类处理含文字与整数的文本文件,生成带平均值的新文件
解决方案:识别文本中的整数并计算平均值
没问题,我来帮你搞定这个需求。首先我们得明确核心任务:从混杂着文字的文本里揪出所有整数,然后算出它们的平均值。下面我用Python实现一个类,专门处理这个逻辑,还考虑了边界情况(比如文本里没有整数的情况,避免除以0报错)。
核心思路
- 读取文本内容后,把内容拆分成一个个独立的元素(按空格分割)
- 遍历每个元素,尝试转换成整数,能成功转换的就收集起来
- 计算收集到的整数的总和和数量,进而得到平均值;如果没有整数,返回
None或者提示信息
完整代码实现
class IntegerAverageCalculator: def __init__(self, text_content): self.text_content = text_content self.integers = [] self._extract_integers() def _extract_integers(self): """从文本内容中提取所有整数""" # 按空格分割文本成单个元素 elements = self.text_content.split() for element in elements: # 尝试转换为整数,处理可能的异常 try: num = int(element) self.integers.append(num) except ValueError: # 不是整数,跳过 continue def calculate_average(self): """计算提取到的整数的平均值""" if not self.integers: # 没有找到整数的情况 return None total = sum(self.integers) count = len(self.integers) return total / count # 测试示例 if __name__ == "__main__": # 用你提供的示例文本测试 sample_text = "blah blah 4 blah blah 2 3 blah 3 blah blah blah blah etc..." calculator = IntegerAverageCalculator(sample_text) average = calculator.calculate_average() print(f"提取到的整数: {calculator.integers}") print(f"平均值: {average}") # 输出应该是3.0
代码说明
__init__方法初始化类,接收文本内容,然后调用提取整数的私有方法_extract_integers是私有方法,负责遍历文本元素,筛选出所有符合要求的整数calculate_average方法计算平均值,特意处理了无整数的边界情况,避免出现除以0的错误
如果你之后要扩展生成新文件的功能,只需要在这个类里加一个方法即可,比如:
def write_new_file(self, original_file_path, new_file_path): """生成新文件,内容和原文件一致,底部追加平均值""" # 读取原文件内容 with open(original_file_path, 'r') as f: content = f.read() # 计算平均值 average = self.calculate_average() # 准备追加的内容 append_content = f"\n\n所有整数的平均值: {average}" if average is not None else "\n\n未找到任何整数" # 写入新文件 with open(new_file_path, 'w') as f: f.write(content + append_content)
这样整个功能就完整啦,你可以根据自己的需求调整细节~
内容的提问来源于stack exchange,提问作者crakajak
相关产品推荐
相关产品推荐

