2017-03-03 5 views
1

私は母音の母音を数えたいと思います。しかし、母音の後ろに子音と母音の後ろに母音の数を数えたいと思っています。誰か助けてくれますか?母音の後ろに子音が付いています

これは私がこれまで行ってきたことですが、母音でi + 1を使う行の構文が無効であると言います。

s = "text" 
vowels = set("aeuio") 
consonants = set("qwrtypsdfghjklzxcvbnm") 

vowelcount=0 
vowelvowelcount=0 
consonantcount=0 
consvowelcount=0 
consconscount=0 
vowelconscount=0 

for i in s: 
    if i in vowels: 
     vowelcount += 1 
    if i in consonants: 
     consonantcount +=1 

for i in s: 
    if (i in vowels,and i+1 in vowels): 
     vowelvowelcount +=1 

print ("number of vowels:", vowelcount) 
print ("number of consonants:", consonantcount) 
print ("number of vowels followed by vowels:", vowelvowelcount) 
+0

文字列スライスを使用して、文字列の途中でカウントしたいと思うでしょう。母音はs [2:3]、母音はs [3:4]のようなものです。 – mba12

+0

@ mba12:でも 's [3:4]'は 's [3]'と同じです... –

+0

@WillemVanOnsem正しいですが、あなたの構文もきれいです。私はあなたの答えを見る前に私のコメントを書いた。 – mba12

答えて

1

あなたがfor i in sを使用する場合は、iインデックスではありません:それは文字です。この問題を解決する簡単な方法は、使用している:

for i in range(len(s)-1): 
    if s[i] in vowels and s[i+1] in consonants: 
     vowelconscount += 1 
    elif s[i] in vowels and s[i+1] in vowels: 
     vowelvowelcount += 1 
    # ...

ここでは、までのすべてのインデックスを反復処理するためにrange(..)を使用します(しかし除く)len(s)-1を。これらの指標のそれぞれについて、iの場合、位置i(すなわちs[i])のsの文字がvowelsで、次の文字s[i+1]がコノンダントであるかどうかを確認します。

1

私はウィレムの答えが好きです。私には別の選択肢があります。この場合、enumerateを使用します。

for i, char in enumerate(s[:-1]): 
    if char in vowels and s[i+1] in vowels: 
     vowelvowelcount +=1 
+0

これは、最後の反復で 'i + 1'が' s'の範囲外で実行されるので、別の 'if'文がなければ動作しません。 –

+0

@WillemVanOnsemああ、 's [: - 1]'を追加するのを忘れてしまった。ありがとう! – sangheestyle

+1

おそらく、 'enumerate(s [: - 1]、1)'を使うことができます。 '+ 1'は' i + 1'です。 –

関連する問題