有没有更好的方法来检查单词的第一个位置的元音?

时间:2015-06-04 19:38:20

标签: python string python-2.7

我正在尝试检查元音作为单词的第一个字符。对于我的代码,我目前有这个:

if first == 'a' or first == 'e' or first == 'i' or first == 'o' or first == 'u':

我想知道有更好的方法来做这项检查,还是这是最好和最有效的方式?

4 个答案:

答案 0 :(得分:15)

您可以使用in

尝试这样做
if first.lower() in 'aeiou':

或更好像

if first.lower() in ('a', 'e', 'i', 'o', 'u'):

答案 1 :(得分:7)

更好地创建一组元音,就像这样

>>> vowels = set('aeiouAEIOU')
>>> vowels
set(['a', 'A', 'e', 'i', 'o', 'I', 'u', 'O', 'E', 'U'])

然后检查first是否是其中之一

>>> if first in vowels:
...

注意:

的问题
if first in 'aeiouAEIOU':

方法是,如果输入错误,例如,如果first'ae',则测试将失败。

>>> first = 'ae'
>>> first in 'aeiouAEIOU'
True

ae显然不是元音。

<强>改进:

如果它只是一次性工作,您不必事先创建一个集合,那么您可以使用if first in 'aeiouAEIOU':本身,但首先检查first的长度,像这样

>>> first = 'ae'
>>> len(first) == 1 and first in 'aeiouAEIOU'
False

答案 2 :(得分:1)

这是正则表达式方法:

from re import match

if match(r'^[aieou]', first):
    ...

如果“first”的第一个字符是元音,则此正则表达式将匹配。

答案 3 :(得分:1)

如果你的函数返回布尔值,那么最简单最简单的方法就是

`bool(first.lower() in 'aeiou')`

或者

return first.lower() in 'aeiou'