这不是作业问题,而是考试准备问题。
我应该定义一个函数 syllables(word)
来计算
一句话如下:
• 元音的最大序列是一个音节;
• 单词中的结尾 e 不是音节(或它是一部分的元音序列)
的)。
我不必处理任何特殊情况,例如最终的 e
单音节词(例如,“be”或“bee”)。
>>> syllables(’honour’)
2
>>> syllables(’decode’)
2
>>> syllables(’oiseau’)
2
我应该在这里使用正则表达式还是只使用列表理解?
最佳答案
我发现这个问题的正则表达式很自然。 (我认为非正则表达式的答案需要更多的编码。我使用两个字符串方法,'lower' 和 'endswith' 使答案更清晰。)
import re
def syllables(word):
word = word.lower()
if word.endswith('e'):
word = word[:-1]
count = len(re.findall('[aeiou]+', word))
return count
for word in ('honour', 'decode', 'decodes', 'oiseau', 'pie'):
print word, syllables(word)
哪个打印:
honour 2
decode 2
decodes 3
oiseau 2
pie 1
请注意,“解码”比“解码”多一个音节(这很奇怪,但符合您的定义)。
问题。这对你有什么帮助?学习题的重点不是你自己解决吗?通过在问题中发布失败的尝试,您将来可能会获得更多好处,因此您可以准确了解自己的不足之处。
关于python - 元音序列计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4099042/