编写函数startWithVowel(word),它接受一个单词作为参数,并返回一个以单词中找到的第一个元音开头的子字符串。如果单词不包含元音,则该函数返回'No vowel'。
实施例
>>> startWithVowel('apple')
'apple'
>>> startWithVowel('google')
'oogle'
>>> startWithVowel('xyz')
'No vowel'
我的回答
def startWithVowel(word):
if word[0] in 'aeiou':
return word
elif word[0] != 'aeiou' and word[1:] in 'aeiou':
return word[1::]
elif word not in 'aeiou':
return "No vowel"
MyQuestion 我知道如果单词包含任何元音,如何删除第一个元音字母,但我坚持使用这个代码..使用这个逻辑它应该为xyz返回'no vowel'。 但它返回'yz',我知道我错在哪里,这是第4行的逻辑问题。但我不知道如何解决这个问题。
答案 0 :(得分:6)
这是一种相当简单的方法:
def startWithVowel(word):
for i, c in enumerate(word):
if c.lower() in 'aeiou':
return word[i:]
return 'No vowel'
>>> for word in 'apple', 'google', 'xyz', 'BOGGLE':
... print startWithVowel(word)
apple
oogle
No vowel
OGGLE
答案 1 :(得分:2)
这个怎么样 -
>>> def startWithVowel(word):
... while len(word) > 0 and word[0] not in 'aeiou':
... word = word[1:]
... if len(word) == 0:
... return 'No vowel'
... return word
...
>>> startWithVowel('apple')
'apple'
>>> startWithVowel('google')
'oogle'
>>> startWithVowel('xyz')
'No vowel'
>>> startWithVowel('flight')
'ight'
如果要检查不区分大小写,请在上面的循环中使用word[0].lower()
。
答案 2 :(得分:1)
第4行逻辑的问题在于您使用的是!=
而不是not in
。你正在做的是比较word [0]这是一个字符,并将它与字符串'aeiou'
进行比较。当然,单个字符永远不会等于字符串。最重要的是,word[1:] in 'aeiou'
和word in 'aeiou'
无法正常工作。他们正在比较字符串,而不是迭代单词的每个字母并比较字符。您可以通过执行以下操作来解决此问题
def startWithVowel(word):
if word[0] in 'aeiou':
return word
else:
for i in range(1, len(word)):
if word[i] in 'aeiou': return word[i:]
return "No vowel"
这表示如果第一个字母是元音,则返回单词,否则,迭代单词中的每个字母并查找元音。如果找到元音,则返回该索引中的单词,如果没有,则返回“否”元音'
答案 3 :(得分:0)
您可以使用re.search
。
import re
def findstring(s):
m = re.search(r'(?i)[aeiou].*', s)
if m:
return m.group()
else:
return "No vowel"
答案 4 :(得分:0)
def startWithVowel(word):
dataLen=len(word)
newStr=''
if word[0] in 'aieou':
return word
for xx in range(1,dataLen):
count=0
if word[0] not in 'aieou' and word[xx] in "aieou" or word[xx] not in 'aieou':
newStr=newStr+word[xx]
if(word[xx] in 'aieou'):
count=count+1
if count>0:
return newStr
else:
return 'No vowel'
#return newStr
for xx in word:
if xx not in 'aieou':
return 'No vowel'