Код отлично работает вне функции, но когда-то внутри, он не работает - PullRequest
0 голосов
/ 26 апреля 2020
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@'))

Ответы [ 3 ]

1 голос
/ 26 апреля 2020

Это потому, что возвращаемое значение находится внутри одного из циклов, поэтому перед печатью возвращенного значения вы выполняете только первую итерацию. Вам нужно поместить возврат в основу функции - вне циклов.

def strip_punctuation(word):
    for i in punctuation_chars:
        if i in word:
            word = word.replace(i, '')
    return word
1 голос
/ 26 апреля 2020

Когда вы вызываете return, функция закрывается. Поэтому, когда я первый раз набираю слово и вы заменяете его, вы возвращаете слово, и функция завершается. Если вы должны заполнить l oop и затем вернуть слово, то оно должно работать.

т.е.

def strip_punctuation(word):
    for i in punctuation_chars:
        if i in word:
           word = word.replace(i, '')
    return word
1 голос
/ 26 апреля 2020

Вы возвращаете word после проверки первого элемента, что означает, что будет удален только первый знак пунктуации '. Замените функцию на эту.

def strip_punctuation(word):
    for i in punctuation_chars:
        if i in word:
            word = word.replace(i, '')
    return word
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...