0

関数を作成するために非常に多くの方法を試しましたが、常に失敗しました。

例えば:

「彼は男の子です。」

「彼をいじめる」

質問で最初に尋ねられるのは、そのような「男の子」をペアにした単語を見つけることです.「b」は「y」とペアになり、「o」はペアになっていません. " と "u" は "l" と一緒ですが、最初の "l" はペアになっていません

次に、単語の最初の文字と単語の最後の文字が次の要件を満たす必要があります。

word1= ('a','b','c','d','e','f','g','h','i','j','k','l','m')
word2= ('z','y','x','w','v','u','t','s','r','q','p','o','n')

"a" は "z" とのみペアにする必要があり、"b" は "y" とのみペアにする必要があります。

したがって、「he is the boy」からの出力は「boy」のみです。「h」は「e」とペアにならず、「i」は「s」とペアにならず、「t」は「e」とペアにならないためです。

ただし、「bully」の場合、「b」と「y」は含まれますが「u」と「l」は含まれないため、「bully him」の出力はありません。

4

4 に答える 4

0

word1andword2をという文字列に凝縮するalphabets

alphabets = 'abcdefghijklmnopqrstuvwxyz'

次の関数は、あなたが望むことを行います(あまりきれいではありません)

def find_match(s): 
    split_s=s.lower().split(' ')
    matches = []
    for word in split_s: 
        found = 0
        sum = 0
        for i in xrange(0,len(word)//2):
            sum += 1
            if alphabets.index(word[i])+alphabets.index(word[len(word)-i-1]) == 25:
                found += 1
        if found == sum: 
            matches.append(word)
    return matches

出力

>>> find_match('bully him')
[]
>>> find_match('the boy wants ')
['boy']
>>> find_match('the boy wants aazz')
['boy', 'aazz']
>>> find_match('the boy wants abayz')
['boy', 'abayz']
>>> find_match('the boy wants abasz')
['boy']

入力文字列を分割して単語を抽出します。次に、各単語について、最初と最後の文字 (など) を実際のアルファベットの位置と比較します ( のインデックスの合計はalphabet25つまり の最大インデックス になりますalphabets)。単語のすべての文字が一致する場合、その単語を一致した単語のリストに追加します

于 2013-04-17T11:45:21.527 に答える
0
>>> from string import punctuation
>>> text = "he is the boy."
>>> word1 = ('a','b','c','d','e','f','g','h','i','j','k','l','m')
>>> word2 = ('z','y','x','w','v','u','t','s','r','q','p','o','n')
>>> d = dict(zip(word1 + word2, word2 + word1))
>>> words = (w.strip(punctuation) for w in text.split())
>>> [w for w in words if d[w[0]] == w[-1]]
['boy']
于 2013-04-17T09:13:07.473 に答える