You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:编写可复用正则表达式解析求和函数的问题

问题修复与优化方案

核心问题分析

你的代码存在三个关键问题:

  • 缩进错误:print语句不在函数内部,无法访问函数内的total和count局部变量,直接运行会报错
  • 全局变量依赖:函数直接使用外部定义的fhand,不符合函数封装规范,复用性差
  • 描述错误:原print里的"lines that were summed"表述错误,你统计的是数字个数而非行数

修正后的代码

import re  # 库导入放在文件顶部,符合Python常规规范

def Ptfs(file_handle):
    count = 0
    total = []
    for line in file_handle:
        numbers = re.findall('[0-9]+', line)
        for number in numbers:
            num = int(number)
            total.append(num)
            count += 1  # 简化计数写法
    # 将输出逻辑放在函数内部,确保能访问局部变量
    print(f"总和: {sum(total)}, 共统计到 {count} 个数字")

# 使用with语句打开文件,自动关闭避免资源泄漏
with open("file_name", 'r') as fhand:
    Ptfs(fhand)

修改说明

  1. 调整库导入位置:把import re移到文件顶部,便于统一管理依赖
  2. 优化函数参数:让函数接收文件对象作为参数,不再依赖全局变量,提升函数独立性
  3. 修正缩进问题:将print语句缩进至函数内部,确保能访问total和count变量
  4. 优化文件操作:用with语句处理文件,无需手动调用close(),更安全规范
  5. 修正输出逻辑:调整输出文本,明确统计对象为数字个数,用f-string让输出更清晰
  6. 简化代码写法:用count += 1替代count = count + 1,代码更简洁

额外提示

如果文件不在当前工作目录,需要传入完整路径,例如with open("/home/user/your_file.txt", 'r') as fhand

内容的提问来源于stack exchange,提问作者Naethan Peters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:17:48