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

为何Python搜索学生函数仅匹配首个元素,无法遍历全列表?

学生搜索函数故障排查与修复

问题背景

现有学生列表:

students = ['44560 Susan Pierce 46', '49509 John Lee 74', '49510 Kim Note 76', '49519 Jennifer Six 50', '49556 Maria Cruz 67', '49586 Martin Lewis 79', '55900 Richard White 100']

编写的search_student函数预期输入编号匹配列表元素前5个字符时返回完整元素,但目前仅对第一个元素有效,无法匹配其他元素:

def search_student(number, students): 
    
    student = [] 
    for i in students: 
        student.append(i[0:5]) 
        
    for i in range(0, len(students)): 
        if student[i] == number: 
            return students[i]
        else:
            return "student not found"

错误分析

第二个for循环根本没机会遍历整个列表,问题出在循环内的return逻辑:

  • 第一次循环时,若第一个元素匹配,直接返回该元素,循环终止;
  • 若第一个元素不匹配,立刻返回"student not found",后续元素完全没被检查。

修复方案

方案1:调整return位置

把返回"student not found"的语句移到循环结束后,确保所有元素都被检查过再返回找不到:

def search_student(number, students): 
    student = [] 
    for i in students: 
        student.append(i[0:5]) 
        
    for i in range(0, len(students)): 
        if student[i] == number: 
            return students[i]
    # 所有元素遍历完都没匹配才返回
    return "student not found"

方案2:简化逻辑(更高效)

无需额外创建编号列表,直接遍历学生列表时对比前5位:

def search_student(number, students): 
    for s in students:
        if s[:5] == number:
            return s
    return "student not found"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:05:22