Новичок в Python — рефакторинг строковой функции

#python

#python

Вопрос:

Вчера я начал изучать Python, и одна из задач на сайте, который я использую, заключается в том, чтобы попросить решить эту проблему ниже. Хотя я успешно решил проблему, она выглядит очень любительской, и я хотел бы, чтобы кто-нибудь умный мог показать лучшее решение или предложить какой-либо соответствующий совет. Спасибо.

Проблема: Напишите функцию censor, которая принимает две строки, text и word, в качестве входных данных. Он должен вернуть текст с выбранным вами словом, замененным звездочками.

Мое решение:

 def censor(text, word):
    text = text.split(" ")
    for i in text:
        if i == word:
            i_index = text.index(i)
            i = "*" * len(i)
            del(text[i_index])
            text.insert(i_index,i)
    text = " ".join(text)
    return text
  

Комментарии:

1. Это отклоняется, потому что это не по теме для Stack Overflow. Если у вас есть работающий код, но вы хотите знать, как его улучшить, воспользуйтесь Code Review .

Ответ №1:

 def censor(text, word):
    return text.replace(word, '*' * len(word))
  

Простая функция замены строки, практически найденная в любой стандартной библиотеке.

Комментарии:

1. это странно, потому что они сказали, что вы можете использовать split и join, но это намного проще. единственное, вы заменяете слово только одной звездочкой, но оно должно быть ‘*’ * len (word), поэтому, если вы обновите свой ответ, я приму его, спасибо.

2. @AshtonMorgan вы могли бы просто использовать '*' * len(word) , как вы сказали в комментариях, в качестве строки замены