我的anti_vowel程序有什么问题。它失败了“嘿看单词”

时间:2015-05-12 13:26:39

标签: python-2.7

def anti_vowel(text):
    a = []
    for i in str(text):
        a.append(i)
    print a

    v = "aeiouAEIOU0"
    for p in v:
        for e in a:
            if p == e:
                a.remove(p)

    print a

    d = ""
    for w in a:
        d = d + str(w)

    return d

1 个答案:

答案 0 :(得分:0)

问题是您在迭代同一个列表时从列表中删除元素。循环将“失去跟踪”其在列表中的当前位置,从而跳过一些元素。

不是先将所有字母添加到列表中,然后删除元音字母,而应首先添加 not 元音的字母。您可以使用列表推导在一行中执行此操作,然后使用''.join将其连接到字符串:

def anti_vowel(text):
    return ''.join(a for a in text if a not in "aeiouAEIOU0")

这大致相当于

d = ""
for a in text:
    if a not in "aeiouAEIOU0":
        d += a