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

导入CSV计算学生成绩时遇TypeError错误求助

问题解决:TypeError: '>=' not supported between instances of 'list' and 'int'

错误原因

你犯了两个关键错误:

  • 判断条件里误用整个marks列表和整数比较(marks >=70),列表和整数无法直接做大小判断,应该用当前行的单个分数值。
  • 从CSV读取的分数是字符串类型,必须先转为数字(整数或浮点数)才能和数字做比较。

修正后的代码

import csv
filename = 'students.csv'
name = []
marks = []
grade = []

with open(filename) as f:
    reader = csv.reader(f)
    # 若CSV有表头(如"姓名,分数")则保留此行跳过表头,无表头可删除
    next(reader)
    for row in reader:
        name.append(row[0])
        # 将CSV读取的字符串分数转为整数,存入列表
        current_mark = int(row[1])
        marks.append(current_mark)
        
        # 用当前单个分数判断等级
        if current_mark >= 70:
            grade.append("A")
        elif current_mark >= 60:
            grade.append("B")
        elif current_mark >= 50:
            grade.append("C")
        else:
            grade.append("D")

print(name)
print(marks)
print(grade)

关键改动说明

  1. 替换判断对象:把marks >=70改成current_mark >=70,用当前行的单个分数值做判断,而非整个列表。
  2. 类型转换:新增current_mark = int(row[1]),将CSV读取的字符串类型分数转为整数,确保能和数字正常比较。
  3. 简化代码:移除无用的array模块导入和多余变量v,直接将等级字符串追加到grade列表,逻辑更清晰。
  4. 表头处理:添加next(reader)跳过CSV表头行(无表头可删除此行)。

额外提示

如果分数包含小数(如85.5),将int()替换为float()即可避免转换报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:03:36