我应该编写一个函数,打印出作为参数传递的单词中没有出现的所有元音。
预期的输出是:
>>> absentVowels('computer')
'ai'
>>> absentVowels('science')
'aou'我现在的代码是:
def absentVowels(word):
vowels = ['a','e','i','o','u']
answer = ''
for i in word:
if i in vowels:
answer+=i
return answer我的输出不是absentVowels('science')的'aou‘,而是得到包含在这个单词中的元音,即'iee’。
编辑:实际上需要在累加器中使用迭代器循环
发布于 2014-10-24 04:19:40
>>> set('aeiou').difference('computer')
set(['a', 'i'])
>>> ''.join(set('aeiou').difference('computer'))
'ai'>>> ''.join(set('aeiou').difference('science'))
'auo'
>>> ''.join(sorted(set('aeiou').difference('science'))) # to get ordered result
'aou'发布于 2014-10-24 04:21:43
def absentVowels(word):
vowels = set('aeiou')
present = set(char for char in word if char in vowels)
print(''.join(sorted(vowels-present)))输出:
In [160]: absentVowels('computer')
ai
In [161]: absentVowels('science')
aou发布于 2014-10-24 04:25:17
另一种选择是使用str.translate,这比使用set.difference要快得多。
>>> 'aeiou'.translate(None, 'computer')
'ai'
>>> 'aeiou'.translate(None, 'science')
'aou'str.translate接受第三个参数deletechars,该参数在翻译前从删除字符串中删除所有字符。正如在上述情况下,翻译表为无,没有翻译发生。
https://stackoverflow.com/questions/26541391
复制相似问题