如果是元音则如何删除第一个字母,如果没有元音则如何不返回元音

时间:2015-07-27 11:22:00

标签: python

编写函数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行的逻辑问题。但我不知道如何解决这个问题。

5 个答案:

答案 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'