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

Python字符串转整数及成绩统计功能实现遇阻求助

问题分析与解决方案

原代码存在的核心问题

  • 文件读取指针耗尽:第一次遍历文件后,文件指针已移到末尾,后续所有for record in Grades循环都会直接跳过,无法执行。
  • 数据类型错误:
    • 统计函数传入的是字符串'grade'而非变量grade,函数无法处理有效数据。
    • 从文件读取的成绩是字符串类型,未转换为整数,统计函数无法对字符串做数值计算。
  • 输入与写入逻辑缺陷:仅获取一次用户输入并写入一行,无法处理多成绩输入;未考虑多成绩输入时的分隔处理。
  • 统计逻辑缺失:总和(Total)、数量(Count)未实现计算;标准差错误调用statistics.mean,应使用statistics.stdev(样本标准差)或statistics.pstdev(总体标准差)。
  • 格式化语法错误:使用%格式化时缺少必要元组结构,写法冗余。

修正后的完整代码

import statistics

def main():
    # 获取用户输入并写入文件,支持空格分隔的多成绩输入
    grades_input = input("请输入学生成绩,用空格分隔:")
    with open('Grades.txt', mode='w') as grades_file:
        for grade in grades_input.split():
            grades_file.write(f"{grade}\n")
    
    # 读取文件并转换为整数列表
    grades = []
    with open('Grades.txt', mode='r') as grades_file:
        for line in grades_file:
            stripped_line = line.strip()
            if stripped_line:
                grades.append(int(stripped_line))
    
    # 空数据判断,避免报错
    if not grades:
        print("没有有效的成绩数据")
        return
    
    # 计算所有统计指标
    mean_val = statistics.mean(grades)
    total_val = sum(grades)
    count_val = len(grades)
    median_val = statistics.median(grades)
    min_val = min(grades)
    max_val = max(grades)
    std_val = statistics.stdev(grades)  # 用pstdev可计算总体标准差
    
    # 输出统计结果
    print(f"均值(Mean): {mean_val:.2f}")
    print(f"总和(Total): {total_val}")
    print(f"数量(Count): {count_val}")
    print(f"中位数(Median): {median_val}")
    print(f"最小值(Min): {min_val}")
    print(f"最大值(Max): {max_val}")
    print(f"标准差(Std): {std_val:.2f}")
    print(f"学生成绩列表: {grades}")

if __name__ == "__main__":
    main()

关键改进说明

  • 一次性处理数据:将文件内容一次性读取并转换为整数列表,避免多次遍历文件的指针问题,同时方便后续统计计算。
  • 完善输入逻辑:支持多成绩空格分隔输入,逐个写入文件,保证数据格式规范。
  • 补全统计功能:实现总和、数量的计算,修正标准差的函数调用。
  • 类型安全与容错:将字符串成绩转换为整数,添加空数据判断,避免空列表导致的运行报错。
  • 简化输出格式:用f-string统一格式化输出,可读性更强、语法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:20:33