首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把所有没有包含在一个词中的元音打印出来。

把所有没有包含在一个词中的元音打印出来。
EN

Stack Overflow用户
提问于 2014-10-24 04:17:31
回答 5查看 844关注 0票数 0

我应该编写一个函数,打印出作为参数传递的单词中没有出现的所有元音。

预期的输出是:

代码语言:javascript
复制
>>> absentVowels('computer')
'ai'
>>> absentVowels('science')
'aou'

我现在的代码是:

代码语言:javascript
复制
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’。

编辑:实际上需要在累加器中使用迭代器循环

EN

回答 5

Stack Overflow用户

发布于 2014-10-24 04:19:40

使用set.difference

代码语言:javascript
复制
>>> set('aeiou').difference('computer')
set(['a', 'i'])
>>> ''.join(set('aeiou').difference('computer'))
'ai'
代码语言:javascript
复制
>>> ''.join(set('aeiou').difference('science'))
'auo'
>>> ''.join(sorted(set('aeiou').difference('science'))) # to get ordered result
'aou'
票数 4
EN

Stack Overflow用户

发布于 2014-10-24 04:21:43

代码语言:javascript
复制
def absentVowels(word):
    vowels = set('aeiou')
    present = set(char for char in word if char in vowels)
    print(''.join(sorted(vowels-present)))

输出:

代码语言:javascript
复制
In [160]: absentVowels('computer')
ai

In [161]: absentVowels('science')
aou
票数 1
EN

Stack Overflow用户

发布于 2014-10-24 04:25:17

另一种选择是使用str.translate,这比使用set.difference要快得多。

代码语言:javascript
复制
>>> 'aeiou'.translate(None, 'computer')
'ai'
>>> 'aeiou'.translate(None, 'science')
'aou'

str.translate接受第三个参数deletechars,该参数在翻译前从删除字符串中删除所有字符。正如在上述情况下,翻译表为无,没有翻译发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26541391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档