为何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
相关产品推荐
相关产品推荐

