2016-12-05 26 views
0

以下のコードで質問13aは、文字列内にいくつの母音が含まれているかをカウントするように質問しています。 (私は宿題でその機能を呼び出す必要はありません)しかし、私はそれをテストするためにそれを呼び出し、その部分は完全に正しいと動作します。文字列は、大文字と小文字の両方に使用でき、句読記号は使用できません。Pythonでi以上の母音の単語を数える関数はありますか?

質問13bは辞書の作成を要求します。キーは文字列内の単語です(文字列には複数の単語があります)。値はその個々の単語の母音の数です。質問には次のような質問があります:単語の母音が少なくとも母音を持っている場合は、それを辞書に追加します(母音の付いた単語)。この関数には2つのパラメータがあります。最初の文字列は句読点のない文字列です。 2番目のパラメータは、単語が辞書に追加されなければならない母音の数を表します。教授は、この関数をアルゴリズムの一部として関数13aと呼びたいと思っています。つまり、質問13aの出力は、この問題のキー(個々の単語)の値です。私はこの質問に困っています。なぜなら、辞書キーに13a(母音の母音の数)の出力を追加するPythonを得ることができないからです。

また、以下のコードでは、変数iを使用していた場所ではまだ作業しませんでした。ここで

は私のコードです:

print("Question 13a") 
    def vowelCount(s): 
     vowels = 'aeiou' 
     countVowels = 0 
     for letter in s.lower(): 
      if letter in vowels: 
       countVowels += 1 
     print(countVowels) 

    print("Question 13b") 
    def manyVowels(t, i): 
     my_string = t.split() 
     my_dict = {} 
     for word in my_string: 
      number = vowelCount(word) 
      my_dict[word].append(number) 
     print(my_dict)  
    print(manyVowels('they are endowed by their creator with certain unalienable rights', 2)) 

あなたがここにそれから質問を理解できない場合はされて教授の方向性:

質問13A(10ポイント) 手紙、E、I、Oおよびあなたは母音です。他の文字は母音ではありません。 vowelCount()という名前の関数を作成します。この関数は、文字列sをパラメータとして受け取り、 数の母音を返します。文字列sには、大文字と小文字の両方が含まれることがあります。 例えば、関数呼び出しのvowelCount( 'Amendment')は、 'A'と 'e'という文字が3回出現するので、整数3を返す必要があります。

質問13B(10ポイント) パラメータとして、テキスト、Tの本体を取る()関数命名manyVowels、及び整数Iを書きます。テキストtには、小文字と空白だけが含まれています。 manyVowels()は、キーが少なくともi の母音を含むtのすべての単語である辞書を返す必要があります。各キーに対応する値は、その中の母音の数です。フルクレジットの場合、 manyVowels()は、各単語の 母音数を決定するために質問11aからヘルパー関数vowelCount()を呼び出す必要があります。たとえば、入力テキストに「hello」という単語が含まれている場合は、 「hello」は辞書内のキーになり、値は2でなければなりません。 「hello」に2つの母音があるためです。 入力: 1. t、小文字と空白で構成されるテキスト 2. i、母音の閾値数 戻り値:キーが少なくともtを含む単語のキーであるキーと値のペアの辞書i 母音と各キーの値は、それに含まれる母音の数です。 たとえば、次のような出力が正しいでしょう。

text = 'they are endowed by their creator with certain unalienable rights' print(manyVowels(text, 3)) {'certain': 3, 'unalienable': 6, 'creator': 3, 'endowed': 3}

+1

それを試してみてください。それ以外の場合は、あなたの質問を特定の問題に限定してください。あなたの宿題を解決することはありません。しかし、特定の問題が1つあり、どのように処理するのか分からない場合は、問題が何であるか、何を期待しているのか、何が起こったのかをお知らせください。あなたの質問を編集してください。 – MSeifert

+0

私の具体的な質問は、どのようにして最初の関数の出力を辞書に追加するのですか? – Jorgan

答えて

1

は十分vovels

def vowelCount(s): 
    vowels = 'aeiou' 
    countVowels = 0 
    for letter in s.lower(): 
     if letter in vowels: 
      countVowels += 1 
    return countVowels 

def manyVowels(t, i): 
    my_string = t.split() 
    my_dict = {} 
    for word in my_string: 
     number = vowelCount(word) 
     if number >= i: 
      my_dict[word] = number 
    return my_dict 

ラインmy_dict[word] = numberがあなたの辞書にvowelCount(word)のresuldを追加するのみで単語を追加するために条件を追加します。しかし、声の数が少なくともiである場合に限ります。

0

あなたのコードは、いくつかの調整必要があります:最初の関数は値を返す必要があり

それを印刷しない:第二の機能は、値を伴うキーを追加していない

return (countVowels) 

を辞書を正しくあなたは使用する必要があります。

my_dict[word] = number 
return {k:v for k, v in my_dict.items() if v > i} 
0
def vowelCount(s): 
    num_vowels=0 
    for char in s: 
    if char in "aeiouAEIOU": 
     num_vowels = num_vowels+1 
    return num_vowels 

def manyVowels(text, i): 
    words_with_many_vowels = dict() 
    text_array = text.split() 
    for word in text_array: 
    if vowelCount(word) >= i: 
     words_with_many_vowels[word] = vowelCount(word) 
    return words_with_many_vowels 

print(vowelCount('Amendment')) 

text = 'they are endowed by their creator with certain unalienable rights' 
print(manyVowels(text, 3)) 

出力:

3 
{'creator': 3, 'certain': 3, 'endowed': 3, 'unalienable': 6} 

は `collections.Counter`が、それはすでに自明平野辞書に変換することができ辞書ライクオブジェクトを返し、特にために非常に有用である可能性here!

関連する問題