python列表理解辅助

时间:2014-10-31 08:56:59

标签: python python-2.7

我最近一直在通过Codecademy学习Python,并遇到了以下问题。 要求学生编写一个简单的函数,该函数将使用两个字符串并用'*' s替换第一个字符串中出现的第二个字符串的实例。因此,如果文本 包含字符串"What the fudge was that"和包含字符串fudge的单词 函数应返回"What the ***** was that"

另一名学生要求他们的代码提供帮助,他们声称这些代码在他们的PC上工作但在Codecademy中没有。

他们的代码如下:

def censor(text, word):
    frase = text.split()
    for p in frase:
        if p == word:
            frase = [word.replace(p, "*"*len(word)) for word in frase]
    return " ".join(frase)

今天早上我试着理解代码。我发现当使用Python 3解释器运行时,当函数分别传递"What the fudge was that""fudge"时,它可以正常工作。

使用Python 2解释器运行时(与Codecademy一样),该函数未返回正确的结果。通过一些更多的调查,我发现问题在于列表理解表达式。在第一次执行后,它会将word的值更改为列表frase中最后一项的值。

我不明白为什么会这样。有人可以对此有所了解吗?

0 个答案:

没有答案