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

Python循环与数组问题求助:TypeError错误排查与修复

Python成绩处理代码错误排查与修复

错误分析

  1. 第23行核心错误
    valor = (nota1 + nota2 + nota3)/3 中,nota1、nota2、nota3是列表类型,+运算符对列表是拼接操作,会生成一个包含所有成绩的长列表,而非对应学生的三科成绩求和。用列表除以整数3自然触发TypeError。

  2. 后续循环的累加错误
    第二个for循环里,soma1 = soma1 + nota1是试图将数值与列表相加,同样会引发类型错误。正确做法是累加每个学生的对应单科成绩,即取列表的索引值nota1[i]。

  3. 输出笔误
    打印第三科平均分的语句中,错误使用了mediaProva1,应该替换为mediaProva3。

修复后的完整代码

VALOR_VETOR = 6
nota1 = []
nota2 = []
nota3 = []
mediaAluno = []
soma1 = 0
soma2 = 0
soma3 = 0
somaMedia = 0
mediaTurma = 0
print("Digite as notas dos alunos\n")

for i in range(VALOR_VETOR):
    print(f"Aluno {i}")
    valor = float(input(f"Nota 1: "))
    nota1.append(valor)
    valor = float(input(f"Nota 2: "))
    nota2.append(valor)
    valor = float(input(f"Nota 3: "))
    nota3.append(valor)
    # 修正:取当前学生的三科成绩计算平均分
    valor = (nota1[i] + nota2[i] + nota3[i]) / 3
    mediaAluno.append(valor)
    print(f"Nota final = {mediaAluno[i]:.1f}")

for i in range(VALOR_VETOR):
    # 修正:累加对应索引的成绩
    soma1 += nota1[i]
    soma2 += nota2[i]
    soma3 += nota3[i]
    somaMedia += mediaAluno[i]

mediaProva1 = soma1 / VALOR_VETOR
print(f"A media da primeira prova é = {mediaProva1:.1f}")
mediaProva2 = soma2 / VALOR_VETOR
print(f"A media da segunda prova é = {mediaProva2:.1f}")
mediaProva3 = soma3 / VALOR_VETOR
# 修正:输出第三科的平均分
print(f"A media da terceira prova é = {mediaProva3:.1f}")
mediaTurma = somaMedia / VALOR_VETOR
print(f"A media da turma é = {mediaTurma:.1f}")

关键修正点总结

  • 计算单个学生平均分:从列表拼接改为取当前索引的三科成绩求和再除以3
  • 成绩累加逻辑:从直接加列表改为累加对应索引的数值
  • 修正输出笔误:第三科平均分的变量引用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:16:12