读取文件中整数时计数未更新,程序故障排查求助
问题分析与修复
你的代码存在几个关键问题,导致所有数字计数都为0:
readline用法错误:f.readline(x)的参数是读取的字节数,不是行索引,循环里这么用根本读不到正确的每行数字。直接用for line in f:就能逐行读取文件内容,不需要手动处理行数。- 类型不匹配:
readline()返回的是带换行符的字符串(比如"0\n"),你直接和整数0-9比较,永远不会相等,自然不会触发计数。必须先把读取的内容转换成整数,同时处理掉换行符。 - 冗余的计数变量:单独定义
ZeroCount到NineCount太繁琐,用一个长度为10的列表来计数更简洁易维护。
修正后的代码
# 用with语句自动管理文件,无需手动关闭 with open("PythonRandomNums", "r") as f: # 初始化计数列表,索引0对应数字0的计数,索引9对应数字9的计数 obs_freq = [0] * 10 for line in f: # 去除换行符并转换为整数 try: num = int(line.strip()) # 仅处理0-9范围内的数字 if 0 <= num <= 9: obs_freq[num] += 1 except ValueError: # 遇到非数字内容直接跳过 continue print(f"Observed Frequencies: {obs_freq}")
额外说明
with语句会在代码块结束后自动关闭文件,避免资源泄漏。- 加入
try-except处理非数字行,防止程序因文件内的异常内容崩溃。 - 用列表索引直接对应数字计数,比单独定义10个变量更简洁高效。
内容的提问来源于stack exchange,提问作者user12106027
相关产品推荐
相关产品推荐

