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

Python:修正older_people函数以返回所有指定年份前出生的人员姓名

修正older_people函数以返回所有符合条件的人员姓名

需求说明

实现older_people(people: list, year: int)函数,从输入的人员列表(每个元素为包含姓名和出生年份的元组)中筛选出所有出生年份早于指定year的人员,返回其姓名组成的新列表。

示例代码及预期输出:

p1 = ("Adam", 1977)
p2 = ("Ellen", 1985)
p3 = ("Mary", 1953)
p4 = ("Ernest", 1997)
people = [p1, p2, p3, p4]

older = older_people(people, 1979)
print(older)

预期输出:['Adam', 'Mary']

原代码问题

当前编写的代码仅能返回第一个符合条件的人员,原代码如下:

def older_people(people: list, year: int):
    for person in plist:
        if person[1] < year:
            return person[0]

p1 = ("Adam", 1977)
p2 = ("Ellen", 1985)
p3 = ("Mary", 1953)
p4 = ("Ernest", 1997)
plist = [p1, p2, p3, p4]

older = older_people(plist, 1979)
print(older)

问题点:

  • 函数参数为people,但循环中误用了外部变量plist,不符合函数封装性;
  • 找到第一个符合条件的元素就用return终止函数,无法收集所有符合条件的姓名。

修正后的代码

基础循环实现

def older_people(people: list, year: int):
    result = []
    for person in people:
        if person[1] < year:
            result.append(person[0])
    return result

p1 = ("Adam", 1977)
p2 = ("Ellen", 1985)
p3 = ("Mary", 1953)
p4 = ("Ernest", 1997)
plist = [p1, p2, p3, p4]

older = older_people(plist, 1979)
print(older)  # 输出: ['Adam', 'Mary']

列表推导式简化实现

如果追求简洁,可以用Python的列表推导式一行完成:

def older_people(people: list, year: int):
    return [person[0] for person in people if person[1] < year]

内容的提问来源于stack exchange,提问作者Fontana dot py

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:01:36