Python - 检查元音,代码返回false,无论如何

时间:2017-10-03 21:15:41

标签: python

我是初学者,所以如果这个问题看起来太简单,我道歉。我不知道从哪里开始使用我的代码,以便它可以正常工作。任何有关从哪里出发的建议都将非常感谢!

谢谢。

def isVowel(word, i):
for i in word:
    if i == 'a' or i == 'e' or i == 'i' or i == 'o' or i =='u' or i == 'y':
        return True
    else:
        return False

这就是我计划执行它的方式:

[isVowel('detestable', i) for i in range(len('detestable'))]
[False, False, False, False, False, False, False, False, False, False]

正如你所看到的,结果我继续变得虚假。我尝试了一些不同的东西,我一直都是假的或者都是真的。

更新

我以为我已经尝试了这个,但是

def isVowel(word, i):
    if word[i] == 'a' or word[i] == 'e' or word[i] == 'i' or word[i] == 'o' or word[i] =='u' or word[i] == 'y':
        return True
    else:
        return False

完美无缺。请随意添加建议,因为我确信有更有效的方法来编写此代码。

3 个答案:

答案 0 :(得分:0)

从用法示例中,似乎isVowel应该只评估单个字符,而不是单词:

def isVowel(i):
    return i in 'aeiou'

在实践中:

>>> [isVowel(i) for i in 'detestable']
[False, True, False, True, False, False, True, False, False, True]

答案 1 :(得分:0)

我即将发布与@Mureinik相同的内容。

这里有一个不同的版本。

>>> is_vowel = lambda v: v in 'aeiou'
>>> word = 'detestable'
>>> [is_vowel(ch) for ch in word]
[False, True, False, True, False, False, True, False, False, True]
>>> 

答案 2 :(得分:0)

所以我的解释是,如果是这些字母aeiuoy之一,你想得到每个字母的布尔值列表:

def is_vowel(word):
    return [letter in 'aeiuoy' for letter in word]

就像这样使用:

is_vowel('foobar')
-> [False, True, True, False, True, False]

所以我对你的推荐是检查函数isVowel(word, i):中的i,因为它实际上被i for the for循环for i in word:所覆盖。我建议在python + python列表推导中重新学习有关函数和范围的知识。