Форум сайта python.su
0
Привет всем! Не могу понять как происоходит передача переменной ‘i’? и ЧТО вообще передается???
вот что имеем:
______________________________________________
def censor(text, word):
text = text.split(' ‘)
for i in range(0, len(text)):
print i,
ewq = ’is'
qwe = ‘that is very beautiful day’
censor(qwe, ewq)
_____________________________________________
вывод: 0 1 2 3 4
Смысл напечатать переменую word как таковую столько раз сколько она встречается, или сколько раз она встречается в цифровом эквиваленте.
Прикреплённый файлы:
Untitled-1.png (50,4 KБ)
Офлайн
73
def censor(text, word): text = text.split() for i in text: if i == ewq: print i ewq = 'is' qwe = 'that is very beautiful day' censor(qwe, ewq)
Офлайн
0
marvellikПривет, да спасибо за ответ.
def censor(text, word): text = ("this hack is wack hack") text = text.split(" ") for i in range(0, len(text)): if text[i] == word: print word text[i] = "*" * len(word) return " ".join(text)
Отредактировано timofmax (Май 20, 2016 11:14:06)
Офлайн
16
Зачем вы передаете функции параметр text, а затем сразу же в теле функции его переопределяете?
Если вам необходим индекс элемента последовательности при проходе по ней в цикле, то надо использовать функцию enumerate()
def censor(text, censored): text = text.split(" ") for i, word in enumerate(text): if word == censored: print(censored) text[i] = "*" * len(censored) return " ".join(text)
def censor(text, censored): return text.replace(censored, '*' * len(censored))
Отредактировано Stright (Май 20, 2016 12:11:08)
Офлайн
73
timofmax
Смысл напечатать переменую word как таковую столько раз сколько она встречается, или сколько раз она встречается в цифровом эквиваленте.
timofmaxобратите внимание на заметку Stright
def censor(text, word):
text = (“this hack is wack hack”)
text = text.split(“ ”)
Strightпеременная text у вас инициированна в теле кода под именем qwe( я про самый первый код в посте) и предается в функцию под именем text и когда вы в теле функции его переопределяете
Зачем вы передаете функции параметр text, а затем сразу же в теле функции его переопределяете?
def censor(text, word): text = text.split(" ") # функция split() по умолчанию использует пробел и явно указывать его не нужно for i in range(0, len(text)):# тут тоже 0 не нужен счет и так с нуля начинается if text[i] == word: print word text[i] = "*" * len(word) return " ".join(text) ewq = 'is' qwe = 'that is very beautiful day' print(censor(qwe, ewq))
Stright
def censor(text, censored):
return text.replace(censored, ‘*’ * len(censored))
Отредактировано marvellik (Май 20, 2016 20:13:46)
Офлайн
0
marvellik
разобрался,
def censor(text, censored):
return text.replace(censored, ‘*’ * len(censored))
без вариантов, самое изящное решение.
Вопрос закрыт.
Спасибо marvellik и Stright за доходчивое пошаговое объяснение.
Офлайн