我是初学者,所以如果这个问题看起来太简单,我道歉。我不知道从哪里开始使用我的代码,以便它可以正常工作。任何有关从哪里出发的建议都将非常感谢!
谢谢。
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
完美无缺。请随意添加建议,因为我确信有更有效的方法来编写此代码。
答案 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列表推导中重新学习有关函数和范围的知识。