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

读取文本时按括号字符加减累加值的Python代码问题排查

问题排查与解决方法

核心问题分析

  1. 遍历对象错误:你的代码用for item in file是按行读取文件,item是一整行文本,不是单个括号字符。除非文件里每一行恰好只有一个(,否则item is up永远不成立,每次都会执行else分支让sum减1。如果文件行数为偶数,加减次数抵消后结果就是0;哪怕修改文件内容,只要逻辑错误,结果也不会正确。
  2. 字符串比较方式错误:用is判断字符串相等是错误的,is是判断两个对象是否为同一个实例,正确的字符串内容比较应该用==。
  3. 未处理非括号字符:原代码遇到任何非(的字符都会减1,包括换行符、空格等,会导致结果偏差。
  4. 文件未正确关闭:直接open文件后没有调用close(),可能造成资源泄漏。

修正后的代码

方法一:读取全部内容后逐字符遍历(适合小文件)

sum = 0
with open("day12015.txt", "r") as file:
    # 读取文件全部内容为一个字符串
    content = file.read()
    for char in content:
        if char == '(':
            sum += 1
        elif char == ')':
            sum -= 1
print(sum)

方法二:逐行读取后再逐字符遍历(适合大文件,避免内存占用过高)

sum = 0
with open("day12015.txt", "r") as file:
    # 先逐行读取
    for line in file:
        # 再遍历每行的每个字符
        for char in line:
            if char == '(':
                sum += 1
            elif char == ')':
                sum -= 1
print(sum)

关键修改说明

  • 使用with语句管理文件:自动在代码块结束后关闭文件,避免资源占用问题。
  • 遍历单个字符:无论是读取全部内容还是逐行后再逐字符,都能准确判断每个括号。
  • 精准判断括号:用==比较字符内容,并且通过elif只处理),忽略其他无关字符,避免结果被干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:05:17