如何修改Python函数返回文本文件各区间的偶数数字个数
修复后的区间偶数数量统计函数
原代码存在的问题
- 最终返回的
last变量未定义,应该返回存储结果的lst - 计数逻辑错误:当前代码是累加偶数的数值,需求是统计偶数的个数
- 区间识别逻辑缺失:没有按照
START和END的包裹范围划分统计区间,直接对所有数字行做处理 - 行读取逻辑错误:进入循环后第一时间就读取下一行,会跳过开头的
START标记识别
修复后的完整代码
from typing import TextIO, List def evens(number_file: TextIO) -> List[int]: lst = [] current_count = 0 in_interval = False # 标记是否在START-END的统计区间内 line = number_file.readline().strip() while line != '': if line == 'START': in_interval = True current_count = 0 # 新区间开始,重置计数 elif line == 'END': in_interval = False lst.append(current_count) # 区间结束,存入计数 elif in_interval and line.isdigit(): num = int(line) if num % 2 == 0: # 判断是否为偶数 current_count += 1 line = number_file.readline().strip() return lst
验证说明
针对示例numbers.txt文件运行该函数:
- 第一个START到END区间内有1、2两个数字,偶数只有2,计数为1
- 第二个START到END区间内只有3,为奇数,计数为0
- 第三个START到END区间内有4、5、6,偶数为4和6,计数为2
最终返回结果为[1, 0, 2],符合需求。
内容的提问来源于stack exchange,提问作者ramin
相关产品推荐
相关产品推荐

