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

如何用Python实现遇#自动重置的$字符计数器?

解决$计数遇到#重置的问题

我来帮你完善这个计数逻辑~你原来的代码是把所有内容转成字符串后直接统计$的总数,确实没法处理遇到#就重置的需求。我们需要逐字符遍历文件内容,维护一个计数器,遇到#就清零,遇到$就累加,这样就能实现你想要的功能了。

修改后的代码

# 初始化计数器,初始值为0
dollar_count = 0

with open(f"{score}", 'r') as f:
    # 逐行读取文件内容
    for line in f:
        # 遍历当前行的每一个字符
        for char in line:
            if char == '#':
                # 遇到#,立即重置计数器为0
                dollar_count = 0
            elif char == '$':
                # 遇到$,计数器加1
                dollar_count += 1

# 这里的dollar_count就是最终的计数结果,可以在程序其他部分调用
# print(dollar_count)  # 测试用,可根据需要删除

代码说明

  1. 摒弃了原来把所有行转成字符串的方式,转而逐字符遍历,这样能实时处理每个字符的触发条件
  2. 遇到#时直接将计数器置0,保证后续的$计数从0重新开始
  3. 遇到$时计数器加1,持续统计当前段(从上一个#到下一个#之间)的$数量
  4. 最终的dollar_count就是最后一段(从最后一个#到文件结尾)的$计数,符合你需要在其他部分使用的需求

如果你还需要记录每一段(两个#之间)的$计数,可以再添加一个列表来保存每次重置前的数值,比如:

dollar_count = 0
segment_counts = []

with open(f"{score}", 'r') as f:
    for line in f:
        for char in line:
            if char == '#':
                segment_counts.append(dollar_count)
                dollar_count = 0
            elif char == '$':
                dollar_count += 1
# 别忘了添加最后一段的计数
segment_counts.append(dollar_count)

# segment_counts里保存了每一段的$数量
# print(segment_counts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:03:44