编写函数startEndVowels(word),如果单词以元音开头和结尾,则返回True

时间:2017-08-23 11:27:22

标签: python string python-2.7

对于以下程序,输出为:

True
False
None
False

预计应该是:

True
False
True
False    

代码有什么问题?

def startEndVowels(word):
    vowels = "aeiou"
    x = word[0]
    y = word[-1]
    z = len(word)
    if z >1:
       if x in vowels:
          if y in vowels:
             return True
       else:
            return False
    elif z == 1:
         if word in vowels:
            return True
         elif x == " ":
              return False
print startEndVowels("apple")
print startEndVowels("goole")
print startEndVowels("A")
print startEndVowels(" ")

4 个答案:

答案 0 :(得分:1)

startEndVowels("A")的情况失败,因为您没有识别大写元音。所以:

vowels = "aeiouAEIOU"

请注意,对于空字符串,您的代码仍然失败,并且在某些情况下,该函数不会返回值(因此它是None):您应该确保始终return

当你有一个布尔条件的模式时:

if condition:
    return True
else:
    return False

...然后就这样做:

return condition

还可以使用and加入条件。所以你可以这样做:

def startEndVowels(word):
    vowels = "aeiouAEIOU"
    return len(word) > 0 and word[0] in vowels and word[-1] in vowels

答案 1 :(得分:1)

您只需使用接受tuple可能的前缀/后缀的startswithendswith方法:

def startEndVowels(word):
    vowels = tuple("aeiouAEIOU")  
    return word.startswith(vowels) and word.endswith(vowels)

您的功能无法正常工作的原因是您没有检查大小写。你也需要包括大写元音:

vowels = "aeiouAEIOU"

或将单词转换为小写:

word = word.lower()

答案 2 :(得分:0)

x = word[0].lower()
y = word[-1].lower()

此外,如果长度> gt = = 1但长度= 0时不需要条件。

答案 3 :(得分:-1)

def startEndVowels(word):
    vowels='aeiou'
    if len(word)>1:
        if word[0].lower()in vowels and word[len(word)-1].lower() in vowels:
            return True
        else:
            return False
    elif len(word)==1:
        if word[0].lower() in vowels:
            return True
    elif word =='' :
        return False