#python #python-3.x
#python #python-3.x
Вопрос:
Задача состоит в том, чтобы найти количество гласных в каждом слове из списка и вывести словарь с результатами.
Я пробовал этот способ:
wordsList = ["creativity", "anna", "civic", "apology", "refer", "mistress", "rotor", "mindset"]
dictionary = {}
vowels = "aeoui"
count = 0
for word in wordsList:
for letter in word:
if letter in vowels:
count = count 1
dictionary[word] = (count)
print(dictionary)
Вот на каком этапе я нахожусь, мне нужна помощь, как считать для каждого слова конкретно. Заранее спасибо!
Ожидаемый результат:
{anna:2} etc.
Комментарии:
1. Вам нужно сбросить количество для каждого слова, в противном случае вы включаете количество гласных для всех предыдущих слов. Кроме того, вы должны удалить два уровня отступа в строке, где вы вводите количество в dictionary; и круглые скобки там бессмысленны и также должны быть удалены.
2. Да, большое спасибо!
Ответ №1:
Ваша ошибка заключается в том, что count необходимо инициализировать внутри цикла: вы также можете добавить часть, в которой вы считаете как гласные в верхнем, так и в нижнем регистре.
wordsList = ["creativity", "anna", "civic", "apology", "refer", "mistress", "rotor", "mindset"]
dictionary = {}
vowels = "aeoui"
for word in wordsList:
count = 0 # I moved it
for letter in word:
if letter.lower() in vowels: # to consider both upper/lower case
count = count 1
dictionary[word] = (count)
print(dictionary)
Комментарии:
1. О да! Большое спасибо! Очень признателен!
Ответ №2:
Вы можете использовать выражение генератора с проверкой гласности для каждой буквы в слове в sum
функции:
dictionary = {word: sum(letter in 'aeiou' for letter in word) for word in wordsList}
dictionary
становится:
{'creativity': 4, 'anna': 2, 'civic': 2, 'apology': 3, 'refer': 2, 'mistress': 2, 'rotor': 2, 'mindset': 2}
Комментарии:
1. Спасибо, не подумал об этом таким образом, очень признателен!
Ответ №3:
Попробуйте это. Вы не сбрасывали значение переменной count в 0 в начале проверки следующего слова. Я также исправил отступ в dictionary[word] = count
wordsList = ["creativity", "anna", "civic", "apology", "refer", "mistress", "rotor", "mindset"]
dictionary = {}
vowels = "aeoui"
count = 0
for word in wordsList:
count = 0
for letter in word:
if letter in vowels:
count = count 1
dictionary[word] = count
print(dictionary)
#{'creativity': 4, 'anna': 2, 'civic': 2, 'apology': 3, 'refer': 2, 'mistress': 2, 'rotor': 2, 'mindset': 2}
Комментарии:
1. Да, забыл сбросить цикл! Большое спасибо, очень ценится!
2. Отлично. Пожалуйста, поддержите, если ответ помог вам
Ответ №4:
Часто подобные вещи выполняются с использованием понимания на Python. Следующее более идиоматично для Python, чем использование циклов for и переменных counter, и разбивает шаги для вас. (Он также обрабатывает заглавные буквы, преобразуя слово в нижний регистр перед его тестированием.)
words = ['creativity', 'SpongbUngulator']
vowel_counts = {}
vowels = set('aeiou')
for word in words:
lowercase_word = word.lower()
found_vowels = [letter for letter in lowercase_word if letter in vowels]
vowel_count = len(found_vowels)
vowel_counts[word] = vowel_count
print(vowel_counts)
Стоит отметить, что это set(lowercase_word).intersection(vowels)
подскажет вам, какие уникальные гласные есть в каждом слове. Наборы Python заслуживают того, чтобы с ними познакомились.