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

Python实现longest_lines函数读取文件报NameError问题求助

问题原因及修复方案

1. 直接报错原因:调用方式错误

你传递的文件名没有加引号,Python会将words100.txt识别为变量名而非字符串,自然会触发NameError。正确的调用方式应为:

longest_lines("words100.txt")

2. 代码本身存在的可修复问题

  • 文件操作未安全关闭:直接调用open()读取后没有执行close(),存在资源泄漏风险,推荐使用with上下文管理器处理文件读取
  • 冗余类型转换:len()返回值本身就是整数,不需要额外用map(int, ...)做二次转换
  • 行拆分逻辑不严谨:直接用split("\n")处理换行可能存在跨平台兼容问题,splitlines()是更稳妥的换行拆分方法;直接对整个文件内容做strip()会丢失首尾的空行,如果你需要统计所有原始行不建议这么做
  • filter判断逻辑不规范:filter接收的判断函数应该返回布尔值,你当前的实现返回匹配的字符串本身,虽然逻辑上能跑,但可读性差且容易出意外
  • 返回值错误:你最后返回的是print(l2)的执行结果,而print()函数的返回值是None,不符合你“返回最长行列表”的需求

优化后的参考代码

def longest_lines(file_name):
    # 用with上下文管理器自动处理文件关闭
    with open(file_name, "r", encoding="utf-8") as f:
        # 直接读取所有行,自动处理换行
        lines = f.read().splitlines()
    # 计算最大行长度
    max_len = max(len(line) for line in lines)
    # 直接筛选长度等于最大长度的行
    return [line for line in lines if len(line) == max_len]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:27:05