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

Python读取文本文件成绩遇类型转换及删除最低分问题求助

处理成绩文件:删除最低分并计算平均分

我来帮你搞定这个问题!你现在遇到的两个核心问题——把文本成绩转成整数、找到并删除最低分,咱们一步步来解决:

首先,解决文本转整数的问题

你用readlines()获取的每一行内容都是带换行符的字符串(比如'92\n'),所以需要先去掉多余的空白字符,再转换成整数。咱们可以把这些成绩存到一个整数列表里,方便后续操作。

然后,找到并删除最低分

用Python内置的min()函数就能轻松拿到列表里的最低分,再用remove()方法删除第一个出现的最低分(如果有多个相同最低分,你要是想删除所有的可以用列表推导式,后面我会提到)。

最后,重新写入文件并计算平均分

把处理后的成绩列表重新写入文件,再用sum()和len()计算剩余成绩的平均分。

下面是修改后的完整代码,我加了详细注释:

try:
    # 读取文件内容,用with语句自动管理文件关闭
    with open('homework.txt', 'r') as homeworkFile:
        lines = homeworkFile.readlines()
    
    # 把每行文本转换成整数,处理掉换行和空格
    scores = []
    for line in lines:
        # 跳过空行(如果文件里有多余空行的话)
        stripped_line = line.strip()
        if stripped_line:
            scores.append(int(stripped_line))
    
    # 可选:验证是否读取到了预期的12个成绩
    if len(scores) != 12:
        print("警告:文件中的成绩数量不是12个!")
    
    # 确保列表不为空再进行后续操作
    if scores:
        # 找到最低分并删除第一个出现的该分数
        min_score = min(scores)
        scores.remove(min_score)
        
        # 重新写入处理后的成绩到文件
        with open('homework.txt', 'w') as homeworkFile:
            for score in scores:
                homeworkFile.write(f"{score}\n")
        
        # 计算并打印平均分,保留两位小数更直观
        average = sum(scores) / len(scores)
        print(f"删除最低分后的平均分是:{average:.2f}")
    else:
        print("错误:文件中没有有效成绩!")

# 针对性处理常见异常
except FileNotFoundError:
    print("Error: 文件不存在!")
except ValueError:
    print("Error: 文件中包含非数字的内容!")
except Exception as e:
    print(f"Error: 发生未知错误 - {e}")

额外说明

  • 我用了with语句来打开文件,它会自动帮你关闭文件,比手动调用close()更安全可靠。
  • 如果你的文件里可能有多个相同的最低分,想要全部删除的话,可以把删除那部分代码改成:
    min_score = min(scores)
    scores = [score for score in scores if score != min_score]
    
  • 代码里加了多种异常处理,覆盖了文件不存在、内容不是数字等常见问题,让程序更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:26