Функция, которая превращает слово в строке в звезды - PullRequest
0 голосов
/ 06 сентября 2018

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

Проблема в том, что я не могу получить окончательный результат, чтобы поставить пробелы между словами, то есть он печатает все слова, собранные вместе. Любая помощь, пожалуйста?

def censor(text, word):

  lis = text.split()

  output =""

  p = []

  for w in lis:
    if w != word:
      p.append(w)

    else:
      l = len(w)
      y = "*" * l
      p.append(y)

  output = output.join(p)

  print output

  censor("Hello world televison", "world")

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Вот еще одно решение, хотя оно немного сложнее, оно должно обрабатывать все возможные случаи:

def censor(text, word):
    text = '.' + text + '.'
    for i in range(len(text)):
        if text[i].lower() == word[0].lower():
            toCensor = True
            for j in range(len(word)):
                if text[i + j].lower() != word[j].lower():
                    toCensor = False
                    break
            if toCensor:
                if (ord(text[i - 1]) < ord('A') or ord(text[i - 1]) > ord('z'))\
                and (ord(text[i + len(word)]) < ord('A') or ord(text[i + len(word)]) > ord('z')):
                    lst = list(text)
                    for j in range(len(word)):
                        lst[i + j] = '*'
                    text = "".join(lst)
    lst = list(text)
    lst = lst[1 : -1]
    return "".join(lst)

censor("World worlds world television", "world")

>>> ***** worlds ***** television

Он обрабатывает заглавные буквы и все знаки препинания.

0 голосов
/ 06 сентября 2018

Вам не нужно сначала инициализировать output пустой строкой. Вы можете просто сделать

 output = " ".join(p)

Обратите внимание на " ".join(), это то, что определяет, как вы присоединяетесь к своим строкам. В данном случае это один пробел. Кроме того, вам нужно что-то вернуть из вашей функции, поэтому вместо использования print вы должны сделать

return output
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...