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

kut*_*edk 7 python string python-2.7

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

if first == 'a' or first == 'e' or first == 'i' or first == 'o' or first == 'u':
Run Code Online (Sandbox Code Playgroud)

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

Rah*_*thi 15

您可以尝试这样使用in:

if first.lower() in 'aeiou':
Run Code Online (Sandbox Code Playgroud)

或者更好

if first.lower() in ('a', 'e', 'i', 'o', 'u'):
Run Code Online (Sandbox Code Playgroud)


the*_*eye 7

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

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

然后检查first他们中的一个是否是这样的

>>> if first in vowels:
...
Run Code Online (Sandbox Code Playgroud)

注意:问题所在

if first in 'aeiouAEIOU':
Run Code Online (Sandbox Code Playgroud)

方法是,如果输入错误,例如,如果first'ae',那么测试将失败.

>>> first = 'ae'
>>> first in 'aeiouAEIOU'
True
Run Code Online (Sandbox Code Playgroud)

ae显然不是元音.


改进:

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

>>> first = 'ae'
>>> len(first) == 1 and first in 'aeiouAEIOU'
False
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是一个非问题,假设OP已将`first`定义为单​​个字符串(可能类似于`first = my_str [0]`). (3认同)