【问题标题】:The code works fine outside the function but once inside, it doesn't work代码在函数外部工作正常,但一旦进入内部,它就不起作用
【发布时间】:2020-04-25 22:51:28
【问题描述】:
punctuation_chars = ["'", '"', ",", ".", "!", ":", ";", '#', '@']


def strip_punctuation(word):

    for i in punctuation_chars:
        if i in word:
            word = word.replace(i, '')
            return word

print(strip_punctuation('GH.GH,GHGH:GHGH;GHGHG@'))

【问题讨论】:

  • 你的 return 缩进是问题。

标签: python python-3.x replaceall


【解决方案1】:

您在检查第一项后返回word,这意味着只会删除第一个标点符号'。用这个替换函数。

def strip_punctuation(word):
    for i in punctuation_chars:
        if i in word:
            word = word.replace(i, '')
    return word

【讨论】:

    【解决方案2】:

    这是因为返回是在其中一个循环内,所以你只在打印返回值之前完成了第一次迭代。您需要将 return 放在函数的底部 - 放在循环之外。

    def strip_punctuation(word):
        for i in punctuation_chars:
            if i in word:
                word = word.replace(i, '')
        return word
    

    【讨论】:

      【解决方案3】:

      当你调用 return 时,函数退出。因此,当 i 第一次出现在 word 中并且你替换它时,你返回 word 并且函数退出。如果您要完成循环然后返回单词,那么它应该可以工作。

      def strip_punctuation(word):
          for i in punctuation_chars:
              if i in word:
                 word = word.replace(i, '')
          return word
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-24
        • 1970-01-01
        • 1970-01-01
        • 2023-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多