对于以下程序,输出为:
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(" ")
答案 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
可能的前缀/后缀的startswith
和endswith
方法:
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