这段代码中删除元音的错误是什么?

时间:2018-02-04 16:40:37

标签: python-3.x

touchpad

o / p: uea

为什么我只用元音得到o / p但是我想做相反的事情呢?

2 个答案:

答案 0 :(得分:2)

试试这个。

def anti_vowel(t):
    v = "aeiouAEIOU"
    r=[t]
    [r.append(r[-1].replace(l,'')) for l in v]
    return r[-1] 

答案 1 :(得分:2)

要使您的代码有效,您可以切换为使用concurrency,或使用for-else语句和in如果 有元音匹配:

break

现在可以提供预期的输出! :)

如果您的效率稍高一些,可以使用def anti_vowel(t): v = "aeiouAEIOU" g = "" for i in t: for c in v: if i == c: break else: g += i return g 生成器:

str.join

我们可以看到它的作品:

def anti_vowel(t):
    v = "aeiouAEIOU"
    return ''.join(c for c in t if c not in v)

请注意,使用>>> anti_vowel("umbrella") 'mbrll' in更快,因为操作在for-loop更加优化。它还产生更易读(或Pythonic)的代码。

哦,顺便说一下,我认为函数应该始终有输出 - 即使意图是low-level输出,所以我使用了print