我参加了10月15日的Codecademy练习。目标是创建一个审查功能 拿字符串“这个黑客是怪人”并用“这个****是怪人”替换它
def censor("this hack is wack", "hack"):
def "h,a,c,k".split():
for letter in list:
"*" 4
"".join(list)
return list
1)我很确定你不需要在函数内部定义函数,所以我将split函数存储为变量吗?
2)在完成循环浏览黑客中的每个字母后,如何重写.join函数以使用星号获取新句子
答案 0 :(得分:4)
让我们从您的代码开始,因为几乎每一行都有问题:
def censor("this hack is wack", "hack"):
def
表示“定义”,是您定义函数的方式。你似乎把它与你打电话的方式混淆了。在这种情况下,您需要变量以便稍后调用您的参数。你有硬编码的字符串文字。这没有意义,也不是有效的语法。
def 'h,a,c,k'.split():
我甚至不知道这意味着什么。 'h,a,c,k'.split()
是一个几乎没有操作的命令,因为split()
默认情况下会拆分空格,而字符串'h,a,c,k'
不包含空格。因此,这将返回['h,a,c,k']
。也就是说,如果您正确发出命令,它将返回。因为它是你开始定义一个函数,然后开始写其他东西?
for letter in list:
这很好,但是list
是一个糟糕的变量名,因为你掩盖了Python内置的list
函数,稍后你可能需要它。 (或者您可能稍后尝试使用它,并且它会表现不正确,因为您将其名称命名为其他内容。)
"*" 4
抱歉,我不明白你的意思。
"".join(list)
很好,除非你没有将它存储在任何地方,而且每次循环只执行一次而不只是一次。
您尝试编写的功能是这样的:
def censor(sentence, bad_word):
return sentence.replace(bad_word, '*' * len(bad_word))
然后你调用就像这样:
censor('this hack is wack', 'hack')
"this **** is wack"
当你调用这样的函数时,'this hack is wack'
变为sentence
而'hack'
变为bad_word
在函数内的代码中。然后,该函数使用字符串的replace
方法替换等于“坏词”('*' * len(bad_word)
)长度的多个星号,用于“坏词”本身。
答案 1 :(得分:2)
首先,您应该学习如何定义函数。
函数将输入作为变量 - 而不是文字。
所以,你的功能就像这样开始:
def censor(string):
您必须使用给定的输入调用您的函数。您想输入"this hack is wack"
,因此您的来电是:censor("this hack is wack")
。
现在,您需要弄清楚如何将"hack"
替换为"****"
。 str.replace
方法就是这么做的。在Python shell中试试这个:
"this hack is wack".replace("hack", "****")
把这一切放在一起,你得到:
def censor(string):
return string.replace("hack", "****")
censor("this hack is wack")
如果你想要变量替换,那么你可以替换任何单词,你的功能应该是:
def censor(string, to_censor):
return string.replace(to_censor, "*" * len(to_censor))
censor("this hack is wack", "hack")
你应该真正研究一个基本的,介绍性的Python教程,因为你的代码在任何方面都不正确。
我建议先阅读Python functions。