Найти - Пользователи
Полная версия: Какое значение несет "i"???
Начало » Python для новичков » Какое значение несет "i"???
1
timofmax
Привет всем! Не могу понять как происоходит передача переменной ‘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 как таковую столько раз сколько она встречается, или сколько раз она встречается в цифровом эквиваленте.

marvellik
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)
в твоем случае i принимает значение по ранжиру от 0 до числа равному длине списка text
поэтому и вывод соответственно числа. по умолчанию range начинает отсчет с нуля и и в твоем случае 0 в аргументе не нужен. другое дело когда значения нужно в интервале получить. почитай внимательно
Цикл for
timofmax
marvellik
Привет, да спасибо за ответ.
А в твоем случае i принимает значения полученного списка text, после манипуляций со строкой методом split.

я пробовал разобраться пошагово с заданием codecademy.
задание было таким забанить *** - звездочками по количеству букв данное слово в строке.
Вот правильное решение:
_______________________________________________
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)
print censor(“text”, “hack”)
______________________________________________
Stright
Зачем вы передаете функции параметр 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))
marvellik
timofmax
Смысл напечатать переменую word как таковую столько раз сколько она встречается, или сколько раз она встречается в цифровом эквиваленте.

про звездочки и замену ничего поэтому и написал как просил
timofmax
def censor(text, word):
text = (“this hack is wack hack”)
text = text.split(“ ”)
обратите внимание на заметку Stright
Stright
Зачем вы передаете функции параметр text, а затем сразу же в теле функции его переопределяете?
переменная text у вас инициированна в теле кода под именем qwe( я про самый первый код в посте) и предается в функцию под именем text и когда вы в теле функции его переопределяете
text = (“this hack is wack hack”)(зачем со скобками?) то теряете значение определенное в теле кода
и кажется функция split() по умолчанию использует пробел и явно указывать его не нужно
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))
timofmax
marvellik
разобрался,
def censor(text, censored):
return text.replace(censored, ‘*’ * len(censored))
без вариантов, самое изящное решение.
Вопрос закрыт.

Спасибо marvellik и Stright за доходчивое пошаговое объяснение.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB