我正在处理我正在进行的更大程序的一小部分。基本上我需要用户输入一个单词,我需要打印第一个元音的索引。
word= raw_input("Enter word: ")
vowel= "aeiouAEIOU"
for index in word:
if index == vowel:
print index
但是,这不起作用。怎么了?
答案 0 :(得分:4)
尝试:
word = raw_input("Enter word: ")
vowels = "aeiouAEIOU"
for index,c in enumerate(word):
if c in vowels:
print index
break
for .. in
将迭代字符串中的实际字符,而不是索引。 enumerate
将返回索引和字符,并使两者更容易引用。
答案 1 :(得分:3)
只是为了与众不同:
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 :(得分:1)
index == vowel询问字母索引是否等于整个元音列表。你想知道的是它是否包含在元音列表中。请参阅其他一些有关工作原理的答案。
答案 3 :(得分:1)
一种替代解决方案,可以说更优雅,是使用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()
使搜索不区分大小写。
答案 4 :(得分:1)
使用list comprehension的相同想法:
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)
答案 5 :(得分:0)
for i in range(len(word)):
if word[i] in vowel:
print i
break
会做你想做的事。
“for word in word”循环遍历 word 的字符而不是索引。 (您可以使用“枚举”功能将索引和字符循环在一起;我会让您自己查看。)