我刚开始学习编程,我收到了使用Python的家庭作业的以下问题。我想知道是否有人可以帮助解释我需要做什么
实现将足球运动员列表分成两组的功能分区()。更准确地说,它将一个名字(字符串)列表作为输入,并打印那些名字以A和M之间的字母开头的足球运动员的名字。
partition([‘Eleanor’, ‘Evelyn’, ‘Sammy’, ‘Owen’, ‘Gavin’])
输出:
Eleanor
Evelyn
Gavin
和
partition([‘Xena’, ‘Sammy’, ‘Owen’])
不会打印任何内容。
答案 0 :(得分:2)
根据确切的问题定义,您可能会寻找以下内容:
def partition(l):
return [firstname for firstname in l
if firstname[0].lower() in 'abcdefghijklm']
def partition2(l):
return [firstname for firstname in l
if 'a' <= ord(firstname[0].lower())
and ord(firstname[0].lower()) <= 'm']
请注意,这些仅严格匹配“A”和“M”之间的ASCII字符。
答案 1 :(得分:0)
在这种情况下我不会用户分区。 请尝试以下方法:
import re players = ['Eleanor', 'Evelyn', 'Sammy', 'Owen', 'Gavin'] am_players = filter(lambda p: re.match('^[A-M].*',p,re.I), players) nz_players = filter(lambda p: re.match('^[N-Z].*',p,re.I), players)
答案 2 :(得分:0)
如果您的分区功能仅打印从“A”到“M”开头的字母,那么partition(['Xena', 'Sammy', 'Owen'])
将不会打印任何内容。
这就是导致你的输出为空的原因。