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

使用for循环创建二维数组时输出不符合预期,求解决方案

问题分析与解决

你的代码出现问题主要有三个原因:

  • grades列表未每次重置:grades定义在所有循环外部,每次处理新学生时没有清空,导致所有学生的成绩都累积到同一个列表里,而且你两次将同一个grades列表的引用添加到ClassGrade,所以最终两个元素指向同一个列表,内容完全重复。
  • 循环变量重复使用:外层和内层循环都用了i,会导致变量被覆盖,逻辑混乱(比如内层循环会修改外层循环的i值)。
  • 未使用输入的学生数量:你获取了NumStudents变量,但外层循环写死了只运行2次,应该用这个变量来控制循环次数。

修正后的代码

ClassGrade = []

num_students = int(input("How Many Students Do You Have ? "))
num_subjects = 2  # 假设每个学生有2门成绩,可根据需求调整

for student_idx in range(num_students):
    # 每次处理新学生时,重新创建一个空的grades列表
    grades = []
    prompt = f"Input student {student_idx + 1}'s grades: "
    for subject_idx in range(num_subjects):
        grade = float(input(prompt))
        grades.append(grade)
    ClassGrade.append(grades)

print(ClassGrade)

关键修改说明

  1. 将grades的定义移到外层循环内部,这样每个学生都会有一个独立的成绩列表,不会累积之前学生的成绩。
  2. 外层和内层循环使用不同的变量名(student_idx和subject_idx),避免变量覆盖导致的逻辑错误。
  3. 用输入的num_students控制外层循环次数,让代码更灵活,不再写死循环次数。
  4. 使用f-string格式化提示文本,代码更简洁易读。

测试输入学生2名,成绩分别为[56,80]和[90,66],最终输出会是[[56.0, 80.0], [90.0, 66.0]],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:05:36