Как мне подобрать гласные? - PullRequest
2 голосов
/ 18 февраля 2011

У меня проблемы с небольшим компонентом большой программы, над которой я работаю. Обычно мне нужно, чтобы пользователь ввел слово, и мне нужно напечатать индекс первой гласной.

word= raw_input("Enter word: ")
vowel= "aeiouAEIOU"

for index in word:
    if index == vowel:
        print index

Однако это не работает. Что не так?

Ответы [ 6 ]

4 голосов
/ 18 февраля 2011

Попробуйте:

word = raw_input("Enter word: ")
vowels = "aeiouAEIOU"

for index,c in enumerate(word):
    if c in vowels:
        print index
        break

for .. in будет перебирать действительные символы в строке, а не индексы.enumerate вернет индексы и символы и упростит обращение к обоим.

3 голосов
/ 18 февраля 2011

Просто чтобы быть другим:

import re

def findVowel(s):
    match = re.match('([^aeiou]*)', s, flags=re.I)
    if match:
        index = len(match.group(1))
        if index < len(s):
            return index
    return -1  # not found
2 голосов
/ 17 мая 2013

Та же идея, используя понимание списка :

word = raw_input("Enter word: ")
res = [i for i,ch in enumerate(word) if ch.lower() in "aeiou"]
print(res[0] if res else None)
1 голос
/ 18 февраля 2011

Одним из альтернативных и, возможно, более изящных решений является использование библиотеки re.

import re
word = raw_input('Enter a word:')
try: 
    print re.search('[aeiou]', word, re.I).start()
except AttributeError:
    print 'No vowels found in word'

По сути, библиотека re реализует механизм сопоставления регулярных выражений. re.search() ищет регулярное выражение, указанное первой строкой во второй, и возвращает первое совпадение. [aeiou] означает «соответствовать a или e, или i, или o, или u», а re.I говорит re.search(), чтобы сделать поиск без учета регистра.

1 голос
/ 18 февраля 2011

index == гласный спрашивает, равен ли буквенный индекс всему списку гласных. То, что вы хотите знать, если оно содержится в списке гласных. Посмотрите некоторые другие ответы о том, как в работе.

0 голосов
/ 18 февраля 2011
for i in range(len(word)):
  if word[i] in vowel:
    print i
    break

будет делать то, что вы хотите.

"для индекса в слове" зацикливается на символах word , а не на индексах. (Вы можете зацикливать индексы и символы вместе, используя функцию «перечисление»; я позволю вам разобраться с этим самостоятельно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...