如何用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) # 测试用,可根据需要删除
代码说明
- 摒弃了原来把所有行转成字符串的方式,转而逐字符遍历,这样能实时处理每个字符的触发条件
- 遇到
#时直接将计数器置0,保证后续的$计数从0重新开始 - 遇到
$时计数器加1,持续统计当前段(从上一个#到下一个#之间)的$数量 - 最终的
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
相关产品推荐
相关产品推荐

