2016-05-09 3 views
0

У меня есть заявление IF следующим образом:Как упростить оператор IF в Python 3

... 
if word.endswith('a') or word.endswith('e') or word.endswith('i') or word.endswith('o') or word.endswith('u'): 
... 

Здесь я должен был использовать 4 ОШ, чтобы охватить все обстоятельства. Есть ли способ упростить это? Я использую Python 3.4.

+1

Проверьте это: http://stackoverflow.com/questions/22812785/use-endswith-with-multiple-extensions – galah92

+0

Также здесь объясняется это: http://stackoverflow.com/a/18351977/390450 –

ответ

2

Попробуйте

if word[-1] in ['a','e','i','o','u']: 

где слово [-1] является последней буквой

3

Использование any

>>> word = 'fa' 
>>> any(word.endswith(i) for i in ['a', 'e', 'i', 'o', 'u']) 
True 
>>> word = 'fe' 
>>> any(word.endswith(i) for i in ['a', 'e', 'i', 'o', 'u']) 
True 
>>> 
+0

, как и у кого-то, вы можете использовать '' aeiou'' вместо списка '['a', 'e']', поскольку оба списка и строка являются итерабельными в python –

1

Просто:

>>> "apple"[-1] in 'aeiou' 
True 
>>> "boy"[-1] in 'aeiou' 
False 
0

word.endswith(c) только й е так же, как word[-1] == c так:

VOWELS = 'aeiou' 

if word[-1] in VOWELS: 
    print('{} ends with a vowel'.format(word) 

будет делать. Нет необходимости создавать список, кортеж, набор или другую структуру данных: просто проверить членство в строке, в данном случае VOWELS.