在此代码中,“计数”在检查单词时做什么?

时间:2018-10-22 10:20:59

标签: python python-2.7 count

好的,所以我在Codecademy结束了,我在这段代码上停留了一段时间,只是没有得到。因此,我最终只是获得解决方案并试图理解它。但我不是很了解。

代码是:

def censor(text, word):
  words = text.split()
  result = ''
  stars = '*' * len(word)
  count = 0
  for i in words:
    if i == word:
      words[count] = stars
      count += 1
  result =' '.join(words)

  return result

print censor("this hack is wack hack", "hack")

现在我认为count必须是索引(因为它说words[count] = stars),但是我不知道为什么他们将其设置为整数(0)或将其添加一个,我猜是它与在文本中设置审查的位置有关,但是如果有人可以向新手更好地解释这一点,我将不胜感激,所以我不仅会不理解而已。

预先感谢:)

2 个答案:

答案 0 :(得分:0)

一种更好地指示正在发生的事情的方法如下: 将 count 设置为全局变量,以便您可以在函数外部访问它,然后只需打印结果即可。

def censor(text, word):
  words = text.split()
  result = ''
  stars = '*' * len(word)
  global count
  count = 0
  for i in words:
    if i == word:
      words[count] = stars
      count += 1
  result =' '.join(words)

  return result

print(censor("this hack is wack hack", "hack"))
print(count)

运行时,您会看到 count 返回的值为 2

遇到被检查的单词时,Count会增加1。

但是,正如其他一些用户在评论中指出的那样,“审查”并不太有效!

答案 1 :(得分:0)

我认为您将代码复制为错误的队友。我认为这应该是-

def censor(text, word):
  words = text.split()
  result = ''
  stars = '*' * len(word)
  count = 0
  for i in words:
    if i == word:
      words[count] = stars
    count += 1  # this line executes regardless of the if condition
  result =' '.join(words)

  return result

print censor("this hack is wack hack", "hack")

此处count跟踪被评估单词的位置。如果该单词恰好等于被检查的单词,则可以正确地用星号替换该单词。现在,您如何知道该单词在列表中的何处? -计数