-2

私はプログラミングを学び始めたばかりで、Pythonを利用した宿題で次の問題が発生しました。誰かが私がする必要があることを説明するのを手伝ってくれるかどうか疑問に思いました

サッカー選手のリストを2つのグループに分割する関数partition()を実装します。より正確には、名(文字列)のリストを入力として受け取り、名がAとMの間の文字で始まるサッカー選手の名前を出力します。

partition([‘Eleanor’, ‘Evelyn’, ‘Sammy’, ‘Owen’, ‘Gavin’])

出力:

Eleanor

Evelyn

Gavin

partition([‘Xena’, ‘Sammy’, ‘Owen’])

何も印刷しません。

4

3 に答える 3

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 文字のみに厳密に一致することに注意してください。

于 2013-01-24T18:47:50.333 に答える
0

この場合、パーティションを使用しません。次のことを試してください。

再輸入
プレイヤー = ['Eleanor', 'Evelyn', 'Sammy', 'Owen', 'Gavin']
am_players = filter(lambda p: re.match('^[AM].*',p,re.I), プレーヤー)
nz_players = filter(lambda p: re.match('^[NZ].*',p,re.I), プレーヤー)
于 2013-01-24T18:50:05.507 に答える
0

パーティション関数が「A」から「M」までの文字で始まる名前のみを出力する場合、partition(['Xena', 'Sammy', 'Owen'])何も出力しません。

これが、出力が空になる理由です。

于 2013-01-24T18:50:27.577 に答える