You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:编写Python脚本从CSV成绩计算学生及格或不及格

嘿,作为Python新手遇到这种问题太正常啦!我来一步步帮你搞定这个成绩分析的脚本,保证你能看懂又好用~

首先咱们先明确下前提:假设你的CSV文件格式是类似这样的(如果你的列名或结构不同,后面代码可以轻松调整):

姓名,分数
张三,85
李四,58

完整可运行的Python脚本(带详细注释)

我会用Python自带的csv模块来写,不用额外安装库,对新手更友好:

import csv

# 这里定义及格分数线,你可以根据需求随便改
PASS_SCORE = 60

# ---------------------- 第一步:读取CSV并在控制台显示分析结果 ----------------------
# 替换成你自己的CSV文件路径,比如'./scores.csv'或者桌面路径
with open('grades.csv', mode='r', encoding='utf-8') as input_file:
    # 用DictReader可以把每行数据转成字典,直接用列名取值,超方便
    csv_reader = csv.DictReader(input_file)
    
    # 先打印个好看的表头
    print(f"{'姓名':<10} {'分数':<5} {'结果'}")
    print("-" * 25)
    
    # 遍历每一行学生数据
    for student in csv_reader:
        name = student['姓名']
        # 这里加个异常处理,防止分数不是数字导致脚本崩溃
        try:
            score = int(student['分数'])
        except ValueError:
            print(f"{name:<10} {student['分数']:<5} *无效分数,请检查*")
            continue
        
        # 判断是否及格,一行代码搞定
        result = "✅ 及格" if score >= PASS_SCORE else "❌ 不及格"
        
        # 打印结果
        print(f"{name:<10} {score:<5} {result}")

# ---------------------- 第二步(可选):把分析结果写入新的CSV文件 ----------------------
# 如果需要把结果保存下来,就运行这段代码
with open('graded_results.csv', mode='w', encoding='utf-8', newline='') as output_file:
    # 定义新CSV的列名
    fieldnames = ['姓名', '分数', '结果']
    writer = csv.DictWriter(output_file, fieldnames=fieldnames)
    
    # 先写入表头
    writer.writeheader()
    
    # 重新读取原文件,把结果追加进去再写入新文件
    with open('grades.csv', mode='r', encoding='utf-8') as input_file:
        reader = csv.DictReader(input_file)
        for student in reader:
            try:
                score = int(student['分数'])
                student['结果'] = "及格" if score >= PASS_SCORE else "不及格"
            except ValueError:
                student['结果'] = "无效分数"
            writer.writerow(student)

print("\n🎉 分析完成!结果已保存到graded_results.csv文件里啦~")
给新手的几个关键提示
  • 文件路径要对:把代码里的'grades.csv'替换成你实际的文件路径,比如Windows桌面路径可能是'C:/Users/你的名字/Desktop/grades.csv',Mac/Linux是'/Users/你的名字/Desktop/grades.csv'
  • 列名要匹配:如果你的CSV列名不是“姓名”和“分数”,比如是“StudentName”和“Score”,记得把代码里的student['姓名']改成student['StudentName']student['分数']改成student['Score']
  • 调整及格线:直接改PASS_SCORE = 60这个数值就行,比如改成50分及格也没问题
  • 处理异常情况:脚本里加了try-except,就算CSV里有非数字的分数(比如填了“缺考”),脚本也不会崩溃,会提示你哪里有问题

运行这个脚本后,你既能在控制台看到每个学生的及格情况,还能得到一个带结果的新CSV文件,完美解决你的需求~

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

火山引擎 最新活动