Вопрос Неправильно работает код в питоне

Регистрация
28 Авг 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
вот мой код объяснение ниже: def indexs(char,chars):

find = []

indexi = []

for _ in range(len(chars)):

find.append(0)

wpos = 0

tpos = 0

charl = len(char)-1

indx = 0

for tpos in range(len(chars)):

if chars[tpos] == char[wpos]:

if wpos == 0:

indx = tpos

if wpos == charl:

b = 0

for a in range(indx,tpos):

if a == 1:

b = 1

break

if b == 0:

indexi.append(indx)

for a in range(indx,tpos+1):

find[a] = 1

wpos = 0

wpos += 1

else:

wpos = 0

print(find)

print(indexi)

print(indexs(input("что искать: "),input("в чем искать: "))) функция indexs ищет индексы сток "char" в "chars"

переменная find хранит места в которых была найдена последовательность они записаны 1 а пустые записаны 0

переменная indexi хранит индексы найденых последовательностей

wpos - позиция поиска в строке char

tpos - позиция чтения строки chars

indx - эта переменная записывает начало последовательности. если последовательность найдена переменная записывается как индекс.

for a in range(indx,tpos):

if a == 1:

b = 1

break

if b == 0:

проверяет не занимает ли найденая последоваетельность уже занятые места.

for a in range(indx,tpos+1):

find[a] = 1 - заполняет места занятые последовательностью

когда запустаю и ввожу выдает неправильные индексы.

пж помогите исправить код я не понимаю почему он не так работает
 
либо это не ваш код, либо ... других вариантов на ум не приходит
 
Код конечно очень стремный, фиг чо поймешь. По-моему это все можно в пару строк написать. Да собственно даже в одну)

Ну как минимум что вижу: for a in range(indx,tpos):
if a == 1:
b = 1
break проверяет не занимает ли найденая последоваетельность уже занятые места.Каким образом оно это проверяет? Все что делает этот код - выкидывает последовательность, если в ней присутствует символ с индексом (исходной строки) 1

Дальше.
wpos у тебя обновляется не сразу как ты нашел последовательность, а только на следующем символе.
Соответственно если у тебя 2 раза подряд встречается, то вторую ты пропустишь

Например
Ищем "ab"
Строка "abab"
Первую ты возьмешь, а вторую нет.
А вот на "ab_ab" уже сработало бы
 
забей в Pycharm и тебе покажет где ошибка (сам щас сделаю) ну и ты попробуй
 
Спроси у нейросети
 
Назад
Сверху