1

次のコードを機能させようとしています。ユーザーが入力したテキスト文字列から母音を削除する必要があります。

def isVowel(text):
    if text in ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U"):
        return True

def withoutVowels(text):
    for char in text:
        if(isVowel == True):
            text = text.replace(char, "")
    return text

isVowel 関数は正常に動作していますが、使用すると正しく評価されないようです。なぜですか?

4

2 に答える 2

11
if (isVowel == True):

する必要があります

if isVowel(char):

isVowel関数オブジェクトです。isVowel == True常に False になります。


str.translateを使用すると、これをより速く、より簡単に行うこともできることに注意してください。

In [90]: 'Abracadabra'.translate(None, 'aeiouAEIOU')
Out[90]: 'brcdbr'

または、(EOL が指摘するように) 正規表現を使用:

In [93]: import re
In [95]: re.sub(r'(?i)[aeiou]', '', 'Abracadabra')
Out[95]: 'brcdbr'

ただし、str.translateこの場合は高速です。

In [94]: %timeit 'Abracadabra'.translate(None, 'aeiouAEIOU')
1000000 loops, best of 3: 316 ns per loop
In [96]: %timeit re.sub(r'(?i)[aeiou]', '', 'Abracadabra')
100000 loops, best of 3: 2.26 us per loop
于 2013-03-17T01:26:13.510 に答える
1

Python はすばらしいので、これを 1 行で実行できます。

def withoutVowels(text):
    return "".join(c for c in text if c not in "aeiouAEIOU")
于 2013-03-17T06:06:45.690 に答える