编写一个名为vowelEndings的函数,它将字符串text作为参数。
函数vowelEndings返回一个字典d,其中的键是所有元音,它们是文本中某个单词的最后一个字母。字母a,e,i,o和u是元音。没有其他字母是元音。对应于d中每个键的值是以该元音结尾的所有单词的列表。在给定列表中,任何单词都不应出现多次。文本中的所有字母均为小写。
以下是正确输出的示例:
>>> t = 'today you are you there is no one alive who is you-er than you'
>>> vowelEndings(t)
{'u': ['you'], 'o': ['no', 'who'], 'e': ['are', 'there', 'one', 'alive']}
这是我到目前为止所做的:
def vowelEndings(text):
vowels = 'aeiouAEIOU'
vowelCount = 0
words = text.split()
for word in words:
if word[0] in vowels:
vowelCount += 1
return vowelCount
t = 'today you are you there is no one alive who is you-er than you'
print(vowelEndings(t))
输出:
5
正在做的是计算每个单词开头的元音,但它应该计算每个单词结尾的元音。此外,它应该在问题中打印出元音和元音所指的单词。我需要帮助。
答案 0 :(得分:3)
你很亲密。缺少的方面是:
word[-1]
。set
以避免重复。经典的Python解决方案是使用collections.defaultdict
:
from collections import defaultdict
t = 'today you are you there is no one alive who is you-er than you'
def vowelEndings(text):
vowels = set('aeiou')
d = defaultdict(set)
for word in text.split():
final = word[-1]
if final in vowels:
d[final].add(word)
return d
print(vowelEndings(t))
defaultdict(set,
{'e': {'alive', 'are', 'one', 'there'},
'o': {'no', 'who'},
'u': {'you'}})