从元组返回某年以前出生的人?



我需要编写一个名为older_people(people: list, year: int)的函数,它选择列表中所有在给定年份之前出生的人作为参数。函数应该以一个新列表的形式返回这些人的名字。

使用示例:

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)

目前,这只打印了1979年之前出生的第一个人(Adam)。对这个有什么帮助吗?

首先,您应该使用older_people函数体中的函数参数,而不是全局变量plist。应该使用People而不是plist。

然后,你的return语句在for循环中,这意味着它将在if条件第一次为真时离开函数,因此只打印一个人。

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)

或者您可以使用标签来引用元组的两个元素,而不是通过索引,也可以使用列表推导式…

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

最新更新