2016-10-03 3 views
0

私はPython言語を習得している初心者です。単語の母音を取り出してアンダースコアに置き換える方法については、私は困惑しています。どのように単語の母音をPythonで下線で置き換えることができますか?

は、これまでのところ、これは私が出ているとそれだけで

word = input("Enter a word: ") 
new_word = "" 
vowels = "aeiouy" 


for letter in word: 
    if letter != vowels: 
     new_word += word 
    else: 
     new_word += "_" 
     print(new_word) 

答えて

1

メイクが、それは自分の手紙だ各要素を持つ配列を母音動作しないものです。

はその後

for letter in word: 
    if letter in vowels: 
     letter = "_" 
1

リストは簡単に言葉を構築するために使用することができない、と.join()で、あなたは単一の文字列にリスト項目を組み合わせることができます。

word = 'pizza' 
vowels = "aeiouy" 
new_word = ''.join(c if c not in vowels else '_' for c in word) 
print(new_word) 
3

あなたがstring.translatemaketrans使用することができます。

word = 'pizza' 
vowels = "aeiouy" 
new_word = [] 
for letter in word: 
    if letter in vowels: 
     new_word.append('_') 
    else: 
     new_word.append(letter) 
print(''.join(new_word)) 

はここでジェネレータ式でも同じことです。

from string import maketrans 

vowels = "aeiouy" 
t = "______" 
st = "trying this string" 
tran = maketrans(vowels, t) 

print st.translate(tran) 
# Gives tr__ng th_s str_ng 

大文字を確認することもできます。

1

あなたはリストの内包を使用してsetオブジェクトとしてvowelsを設定する正規表現

import re 
print(re.sub("[aeiouAEIOU]", "_", "abc")) # prints _bc 
0

を使用することができます(あなたが反復している、その上の単語の大規模なリストを持っている場合、これはパフォーマンスをスピードアップするための、本当に唯一の価値があります):

>>> vowels = set("aeiouy") 
>>> word = 'ampersand' 
>>> new_word = "".join([letter if letter not in vowels else "_" for letter in word]) 
>>> print(new_word) 
_mp_rs_nd 
0

あなたのアプローチがうまくいかなかった理由を答えるには

if letter != vowels: 

あなたが考えていることはしません。それは実際に文字と完全な文字列"aeiouy"を比較します。それは常に不等である(例えば、​​は真であり、従って他の文字でもある)。より多くの可能性が高いあなたは何を意味するか

は、ボンネットの下にvowelsを反復し、letterに各文字を比較し、手紙の試合のいずれかの場合Trueを返す

if letter in vowels: 

ました。

二間違いはあなたが新しい単語ではなく、あなただけのチェックを文字に元の単語を追加している、ここで

new_word += word 

です。そのようにしてください

new_word += letter 

注意しなければならないのは、ロジックが意図したものとは逆のことです。 _で母音を置き換えたいのですが、if文で母音を新しい単語に置き換え、子音を下線で置き換えます。したがって、if節とelse節を逆にするとします。

あなたは

word = input("Enter a word: ") 
new_word = "" 
vowels = "aeiouy" 

for letter in word: 
    if letter in vowels: 
     new_word += '_' 
    else: 
     new_word += letter 

print(new_word) 
+0

で終わるすべてのアップが、これはとても役立ちました、ありがとうございました。 –

+0

問題ありません。あなたや他の人の答えを受け入れる(そしてアップアップする)のが、あなたを最も助けてくれたことを気にしてください。 –

関連する問題