2016-06-15 3 views
-1
s = input("Enter a sentence: ") 
emp = "" 
vow = 0 
for i in s: 
    if i.isspace() == False: 
     emp = emp+i 
    else: 
     for j in emp: 
      if j in 'aeiouAEIOU': 
       vow = vow+1 
     print("The number of vowels in", emp, "are", vow) 
     emp = "" 

最初の単語にのみ母音が表示されます。文字列の各単語の母音の数を調べる方法は?

+1

私は、コードを実行し、それが(カウンタがリセットされていないだけであること)すべての単語の母音を与えます。あなたは何が間違っているかについてもっと詳しく説明できますか? –

+0

入力として与えられた文は何ですか?アウトプットとして何を期待していますか?単語ごとの母音の数はどのような形ですか? –

答えて

0

sumまたはlenの機能を使用できます。

>>> s="asdf 14oji iii34" 
>>> sum(1 for i in s if i in 'aeiouAEIOU') 
6 
>>> 

または

>>> len([i for i in s if i in 'aeiouAEIOU']) 
6 
>>> 
+1

'1'の必要性なし、ブール値は合計時に整数として扱われます。さらに、 '.lower()'を使う方が良いと思います。しかし、単語ごとにボイルの代わりにボイルの総数を表示します。 – Delgan

4

変数vowは、あなたが遭遇するそれぞれの新しい単語のためにそれをリセットする必要があります0にリセットされることはありませんので、あなたのコードは、他の、機能していない、それは中母音の合計を出力しますあなたのひも。言葉は「自動的に」分離されているので


よりよい解決策は、代わりにisspace()split()を利用することです。

次に、各単語を繰り返し、母音である文字を集計することができます。

words = s.split() 
for word in words: 
    vow = sum(letter in 'aeiou' for letter in word.lower()) 
    print("The number of vowels in", word, "are", vow) 
1

正規表現にはreモジュールを使用してください。

import re 

sentence = r'Hello World, how many vowels are in this sentence by word?' 

for word in sentence.split(): 
    s = re.findall(r'[aeiou]', word, flags=re.IGNORECASE) 
    print(word,'has',len(s),'vowels.') 
0

ます。また、この方法のようにそれを行うことができます:

sentence = input("Enter a sentence: ") 
vowels = "aeiouAEIOU" 

for word in sentence.split(): 
    vowel_count = 0 
    for letter in word: 
     if letter in vowels: 
      vowel_count += 1 

    print("The number of vowels in %s is: %d" % (word, vowel_count)) 
関連する問題