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

Python遍历学生列表查询ID时如何仅输出匹配的平均成绩结果

问题根源

你的代码存在两处逻辑问题:

  • 每次遍历单个学生时都会做分支判断并输出内容,没有先完成匹配再统一输出,导致遍历每个非目标学生时都会输出"not found"
  • 无成绩的判断没有和输入ID绑定,哪怕遍历到的不是目标学生,只要该学生成绩为空就会输出对应提示

修改思路

  • 遍历过程中仅做匹配记录,找到对应学生后标记结果,匹配完成后再统一输出
  • 匹配到目标学生后直接跳出循环,减少不必要的遍历
  • 无成绩、未找到等提示的输出逻辑,全部和目标学生的匹配结果绑定,不输出其他学生的相关信息

修改后代码

students = [ # 存储学号、姓名、各科成绩的列表
    ("123", "Adam", [58, 68, 74]),
    ("925", "Bob", []),
    ("456", "Carly", [68, 72, 100]),
    ("888", "Deborah", [68, 99, 100]),
    ("789", "Ethan", [52, 88, 73])
]
input_id = str(input("Enter Student id: "))
# 初始化匹配标记
found = False
target_name = ""
avg_score = 0
no_grades = False

# 遍历学生列表
for student in students:
    s_id, s_name, s_grades = student
    if s_id == input_id:
        found = True
        target_name = s_name
        if not s_grades:
            no_grades = True
        else:
            avg_score = sum(s_grades) / len(s_grades)
        break # 匹配到目标后直接跳出循环,无需继续遍历

# 遍历完成后统一输出结果
if found:
    if no_grades:
        print(target_name, "has no grades")
    else:
        print(target_name, avg_score)
else:
    print(input_id, "not found")

修改后输入学号456时,仅会输出Carly 80.0,不会产生其他无关内容。

内容的提问来源于stack exchange,提问作者Shoshan Ben-Tzvi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:54:06