Python循环与数组问题求助:TypeError错误排查与修复
Python成绩处理代码错误排查与修复
错误分析
第23行核心错误
valor = (nota1 + nota2 + nota3)/3中,nota1、nota2、nota3是列表类型,+运算符对列表是拼接操作,会生成一个包含所有成绩的长列表,而非对应学生的三科成绩求和。用列表除以整数3自然触发TypeError。后续循环的累加错误
第二个for循环里,soma1 = soma1 + nota1是试图将数值与列表相加,同样会引发类型错误。正确做法是累加每个学生的对应单科成绩,即取列表的索引值nota1[i]。输出笔误
打印第三科平均分的语句中,错误使用了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
相关产品推荐
相关产品推荐

