为何每次计算出的最大值均为9?Python数值文件读取问题排查
为什么计算最大值总是9?
看起来问题出在你的readFile()函数上——从你给出的代码片段来看,这个函数没写完,但大概率是读取文件时错误地把每个数字拆成了单个字符,而不是读取完整的数值。
问题根源
你的writeFile()函数是把每个随机数(比如100、567这种)转成字符串后加换行写入文件,所以文件里每行是一个完整的数字。但如果readFile()是逐字符读取文件内容,比如把"123\n"拆成'1'、'2'、'3'、'\n',然后只把单个字符转成整数存入列表,那你的numbers列表里就全是0-9的单个数字,最大值自然就是9了。
修复方案
把readFile()改成按行读取并解析完整的数字,推荐用with语句来自动管理文件(避免忘记关闭文件):
def readFile(): numbers = [] # 使用with语句自动处理文件打开/关闭 with open('numbers.dat', 'r') as infile: for line in infile: # 去掉每行的换行符和前后空白 cleaned_line = line.strip() # 跳过可能的空行 if cleaned_line: numbers.append(int(cleaned_line)) return numbers
额外检查点
同时确认你的statFile(numbers)函数里计算最大值的逻辑是正确的,比如用max(numbers)而不是自己写的错误遍历逻辑:
def statFile(numbers): if not numbers: print("No numbers to process!") return max_num = max(numbers) print(f"The maximum number is: {max_num}")
这样修改后,读取到的就是完整的随机数,计算出来的最大值就会是1-1001之间的真实最大值了。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

