这不是一个家庭作业问题,而是一个考试准备问题。
我应该定义一个函数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
请注意,“解码”比“解码”多一个音节(这很奇怪,但符合您的定义)。
问题。这对你有什么帮助?研究问题的重点不就是你自己解决它吗?通过在问题中发布失败的尝试,您将来可能会获得更多好处,这样您就可以准确地了解自己的不足之处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)