Форум сайта python.su
python4ikпоэтому не правильно и работает
По моему n увеличивается только при совпадении символов
Офлайн
s='hello frends'
frend='frends'
n=0
for x in s:
if frend[n] is x:
n+=1
print x,
Офлайн
с целью определись: нужно найти подстроку в тексте или найти символы в тексте.
если найти символы то попробуй свой код с таким текстом:
s='hello frends'
frend='sdnerf'
Офлайн
Согласен,что где-то заблуждаюсь в цикле.Недавно заметил за собой одну ошибку:
def help(object, spacing=10, collapse=1):
...
methodList = [method for method in dir(object) if callable(getattr(object, method))]
Func = collapse and (lambda s: " ".join(s.split())) or (lambda s: s) - тоесть здесь перепутал collapse на callable
Отредактировано (Март 28, 2010 14:14:23)
Офлайн
python4ikОч хорошо. Ну вот нашли вы этот символ в файле, увеличили n, потом нашли еще и еще и так дошли до конца l. А файлы с совпадениями продолжают поступать. Вот так вы и выходите за границы l.
А ведь n стоит не в цикле for w in z,а увеличивается при условии,что символ из моего списка совпадает с одним из символов в файле!
Офлайн
Вот я немного переписал КОД:
simb='надо найти все эти символы. Они находятся,но по завершению выдаёт ошибку! IndexError!'
l=[]
n=0
nomsimb=-1
for x,y,z in os.walk('d:\\'):
for w in z:
for q in w:
nomsimb+=1 - здесь читает индекс найденного симв.
if q is simb[n]:
l.append(x)
l.append(w)
l.append(q)
print '\\'.join(l),nomsimb - здесь выводит полный путь сам симв.,и индекс симв.
n+=1 - если n записывает все найденные симв.даже после того как все нашёл
if n==len(simb):break - почему эта сторока не срабатывает,выход из цикла!
l=[]
nomsimb=-1
Отредактировано (Март 28, 2010 20:36:00)
Офлайн
> - почему эта сторока не срабатывает,выход из цикла!
срабатывает
она выходит из 3-го цикла, но при этом ещё есть 1-ый и 2-й цикл, тут тебе надо return или exit(), для ретурна надо все в ф-ию завернуть
но алгоритм все равно не верный (он подобен примеру в посте 12)
и вообще зачем так извращаться, это не С++, питон - язык высокого уровня, эту задачу можно сделать в 2 строки.
Офлайн
python4ikЯ думаю потому, что она в теле предыдущего if, а не цикла for. У вас криво табуляция расставлена.
if n==len(simb):break - почему эта сторока не срабатывает,выход из цикла!
python4ikА можно полный текст ошибки?
После появлении ошибки n=len(simb).Тоесть n не вышло за пределы simb
Как сделать,чтобы не выдавало ошибку?
Офлайн
UsCrbreak не смотрит на if, он прерывает циклы
Я думаю потому, что она в теле предыдущего if, а не цикла for. У вас криво табуляция расставлена.
Офлайн
o7412369815963Проверил. Действительно. Тогда прошу прощения.
break не смотрит на if, он прерывает циклы
Отредактировано (Март 28, 2010 20:21:09)
Офлайн