2016-12-05 66 views
0

在下面的代碼問題13a問我要函數計算一個字符串中有多少元音。 (我不必在家庭作業中調用該函數)。但是我打電話來測試它,並且該部分是完全正確的,並且它可以工作。字符串可以是大寫和小寫,不含標點符號。計算Python中i或更多元音字詞的函數?

問題13b要求創建一本詞典。關鍵是字符串中的單詞(該字符串有多個單詞)。值是該單個詞中的多少元音。問題是這樣的:如果這個單詞至少有i個元音,那麼將它附加到字典(帶有元音元音的單詞)這個函數有兩個參數。第一個是沒有標點符號的字符串。第二個參數表示單詞必須附加到字典中的元音數量。教授希望我將函數13a的這個函數作爲算法的一部分。也就是說,問題13a的輸出是這個問題中關鍵字(單個詞)的值。我在這個問題上遇到了麻煩,因爲我無法讓Python將13a的輸出(一個單詞的元音數)附加到字典鍵。

而且在下面的代碼中,我沒有在那個部分工作,但是我在那裏使用變量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分) 字母A,E,I,O和你是元音。沒有其他字母是元音字母。 編寫一個名爲vowelCount()的函數,它接受一個字符串s作爲參數,並返回其包含的元音數量 。字符串s可能包含大寫和小寫字符。 例如,函數調用vowelCount('Amendment')應該返回整數3,因爲 有三次出現的字母'A'和'e'。

問題13b(10分) 編寫一個名爲manyVowels()的函數,它將文本主體t和整數i作爲 參數。文本t只包含小寫字母和空格。 manyVowels()應返回一個字典,其中的所有關鍵字都是包含至少包含i元音的所有單詞。與每個鍵對應的值是其中的元音數量。對於完全學分, manyVowels()必須調用問題11a中的助手函數vowelCount()來確定每個單詞中的元音數 。例如,如果輸入文本包含單詞「hello」,那麼 「hello」應該是字典中的一個鍵,其值應該是2,因爲 「hello」中有2個元音。 輸入: 1. t,由小寫字母和空白組成的文本 2. i,閾值數量的元音 返回:鍵值對的字典,其中鍵是至少包含t的字元音和每個鍵的值是它包含的元音的數量。例如,以下將是正確的輸出。

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

+1

'collections.Counter'可能是特別是因爲它已經返回可輕易地轉化成一個普通的字典的字典狀物體是非常有用的。否則,請將您的問題限制爲一個特定問題 - 我們不會解決您的作業問題。但是,如果您有一個具體問題,並且不知道如何繼續,請告訴我們您的問題是什麼,您期望什麼以及發生了什麼。然後[編輯]你的問題。 – 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到你的字典只添加單詞。但只有當vovels的數量至少爲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} 

嘗試here!