2016-12-05 5 views
0

В приведенном ниже коде Вопрос 13a просит, чтобы функция подсчитывала количество гласных в строке. (Мне не нужно называть эту функцию в моей домашней работе.) Но я назвал ее, чтобы проверить ее, и эта часть полностью правильная и работает. Строка может быть как в верхнем, так и в нижнем регистре без пунктуации.Функция для подсчета слов i или более гласных в Python?

Вопрос 13b просит создать словарь. Ключ - это слово в строке (строка содержит несколько слов). Значение - сколько гласных в этом отдельном слове. Вопрос задает вопрос: если слово имеет значение «МЕНЬШЕ» i количество гласных, то добавьте его в словарь (слово с количеством гласных). Эта функция имеет два параметра. Первая из них - строка с пунктуацией NO. Второй параметр представляет количество сколько гласных слово ДОЛЖНО быть добавлено в словарь. Профессор хочет, чтобы я назвал функцию 13а этой функцией частью алгоритма. При этом вывод Вопроса 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)) 

Если вы не можете понять этот вопрос, то здесь направления профессора:

Вопрос 13а (10 баллов) буквы а, е, я, о и u - гласные. Никакое другое письмо не является гласным. Напишите функцию с именем vowelCount(), которая берет строку, s, как параметр и возвращает количество содержащихся в ней гласных. Строка s может содержать символы верхнего и нижнего регистра. Например, вызов функции vowelCount ('Amendment') должен возвращать целое число 3, потому что есть 3 вхождения букв «A» и «e».

Вопрос 13b (10 баллов) Напишите функцию с именем manyVowels(), которая принимает тело текста, t и целое число, i, как параметры . Текст t содержит только строчные буквы и пробелы. manyVowels() должен возвращать словарь, в котором ключи являются всеми словами из t, которые содержат по меньшей мере i гласных. Значение, соответствующее каждому ключу, - это количество гласных в нем. Для полного кредита manyVowels() должен вызвать вспомогательную функцию vowelCount() из Вопроса 11a, чтобы определить число гласных в каждом слове . Например, если текст ввода содержит слово «привет», то «привет» должен быть ключом в словаре, а его значение должно быть 2, потому что есть 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

'collections.Counter' может быть очень полезным, особенно потому, что он уже возвращает словарь-подобный объект, который может быть тривиально преобразуется в обычный Dict , В противном случае, пожалуйста, ограничивайте свой вопрос одной конкретной проблемой - мы не будем решать вашу домашнюю проблему. Но если у вас есть одна конкретная проблема и вы не знаете, как это сделать, сообщите нам, что ваша проблема, что вы ожидаете и что произошло. Затем измените свой вопрос. – 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 добавляет resuld из vowelCount(word) в словарь. Но только в том случае, если число 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!

 Смежные вопросы

  • Нет связанных вопросов^_^