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

Python读取文本文件数据至列表并实现数据分析的技术问询

文本文件数据读取与分析代码修正

任务要求

从指定TXT文件读取数据,将每行数字作为元素添加至列表;读取完成后将列表传入main(),作为Analyze函数的参数,在该函数中计算列表的最小值、最大值、平均值及总和。

原代码问题

def lueTiedosto(data):
    Tiedosto = open("L07T4D1.txt", 'r', encoding="UTF-8")
    Rivi = Tiedosto.readline()
    while (len(Rivi) > 0):
        data.append(int(Rivi))
        Rivi = Tiedosto.readline()
    for element in data:
        print(element)
    print(f"Tiedosto L07T4D1.txt luettu.")
    Tiedosto.close()
    return element

原代码存在以下问题:

  • 硬编码文件名,无法灵活切换读取的文件
  • 返回值错误,返回的是最后一个遍历的element而非填充好的目标列表data
  • 多余的元素打印逻辑,偏离了仅读取数据的任务要求

修正后读取函数代码

def lueTiedosto(data):
    default_filename = "L07T4D1.txt"
    Lue = input(f"Luettavan tiedoston nimi on '{default_filename}'.\nAnna uusi nimi, enter säilyttää nykyisen: ")
    # 用户直接回车则保留默认文件名
    if not Lue:
        Lue = default_filename
    try:
        # 使用with语句自动管理文件资源,无需手动close
        with open(Lue, 'r', encoding="UTF-8") as Tiedosto:
            Rivi = Tiedosto.readline()
            while len(Rivi) > 0:
                # 过滤空行,避免转换非数字内容报错
                stripped_line = Rivi.strip()
                if stripped_line:
                    data.append(int(stripped_line))
                Rivi = Tiedosto.readline()
        print(f"Tiedosto '{Lue}' luettu.")
    except FileNotFoundError:
        print(f"Virhe: Tiedostoa '{Lue}' ei löydy.")
    return data

注:在给定修正代码基础上补充了文件不存在的异常处理、空行过滤逻辑,同时用with语句优化了文件资源管理,提升代码健壮性。

完整实现代码

def lueTiedosto(data):
    default_filename = "L07T4D1.txt"
    Lue = input(f"Luettavan tiedoston nimi on '{default_filename}'.\nAnna uusi nimi, enter säilyttää nykyisen: ")
    if not Lue:
        Lue = default_filename
    try:
        with open(Lue, 'r', encoding="UTF-8") as Tiedosto:
            # 改用for循环遍历所有行,代码更简洁
            for rivi in Tiedosto:
                stripped_line = rivi.strip()
                if stripped_line:
                    data.append(int(stripped_line))
        print(f"Tiedosto '{Lue}' luettu.")
    except FileNotFoundError:
        print(f"Virhe: Tiedostoa '{Lue}' ei löydy.")
    except ValueError:
        print(f"Virhe: Tiedostossa '{Lue}' on ei-numeroinen rivi.")
    return data

def Analyze(num_list):
    if not num_list:
        print("Analyysia ei voi suorittaa: lista on tyhjä.")
        return
    min_val = min(num_list)
    max_val = max(num_list)
    total = sum(num_list)
    avg_val = total / len(num_list)
    print("\n--- Analyysitulokset ---")
    print(f"最小值: {min_val}")
    print(f"最大值: {max_val}")
    print(f"总和: {total}")
    print(f"平均值: {avg_val:.2f}")

def main():
    data_list = []
    data_list = lueTiedosto(data_list)
    Analyze(data_list)

if __name__ == "__main__":
    main()

代码说明

  • lueTiedosto函数:支持用户自定义文件名,自动处理文件资源,增加异常捕获避免程序崩溃,过滤无效行
  • Analyze函数:接收数字列表,计算并输出核心统计值,同时处理空列表的边界情况
  • main函数:初始化数据列表,串联读取与分析逻辑,作为程序入口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:50:26