Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2019 14:18:45

mummer
Зарегистрирован: 2019-04-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с заменой символов в строке

Добрый день!

На питонтьюторе делаю задачу по удалению каждого третьего символа в строке.
Там есть несколько иное решение, у меня своё:

 a = str(input())
s = len(a)
for i in range(s):
    if i%3 == 0 and i != 0: # чтоб он не возвращал символ с нулевым индексом
        print(a[i]) #тут идет проверка, точно ли он показывает нам каждый третий символ
        b = a.replace(a[i], '')
        print(b)
И вот тут начинается катавасия.
Если в слове нет одинаковых букв, всё заходит на “ура”.
Даже если они есть, пятая строка выдает верные индексы, всё ок.
Но стоит ввести слово с повторяющимися символами, программа после третьего прохода удаляет ВСЕ символы, замеченные ей более одного раза. Вот, например, что она выдает при введенном слове “mandragora”:
mandragora
d
manragora
g
mandraora
a
mndrgor
Где ошибка, подскажите, плз.
Учу язык сам, поэтому некоторые моменты объяснить некому((

Офлайн

#2 Апрель 19, 2019 15:32:37

BOBAH
Зарегистрирован: 2019-02-17
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с заменой символов в строке

a = list(input())
c = len(a)
print(c)
for i in range(2, c):
if i % 3 == 0 and i - (i / 3 - 1) <= c: # символ с нулевым индексом проверку не проходит см. строка выше
index = int(i - (i / 3 - 1) - 1) # для компенсации смещения
print(a[index]) #тут идет проверка, точно ли он показывает нам каждый третий символ
a.pop(index)
print(''.join(a))
c = len(a)

обрати внимание, что питон при обращении по индексу считает 1-ый символ как 0-вой, 2-ой как 1-ий и тд.
Так же после начала цикла значение range(2, c), а вот значение действительной длинны а меняется, по-этому наблюдается некоторое смещение

Отредактировано BOBAH (Апрель 19, 2019 15:58:18)

Офлайн

#3 Апрель 19, 2019 15:34:26

BOBAH
Зарегистрирован: 2019-02-17
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с заменой символов в строке

replace заменяет символ не по индексу, а все символы подходящие символы.

Отредактировано BOBAH (Апрель 19, 2019 15:35:35)

Офлайн

#4 Апрель 19, 2019 15:43:57

BOBAH
Зарегистрирован: 2019-02-17
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с заменой символов в строке

mummer
программа после третьего прохода удаляет ВСЕ символы
Не после 3-го, а после каждого, попробуй в свой скрипт ввести слово rtnrtrnrnt, и переменная b у тебя бесполезная все символы, которые ты удаляешь, на следующей итерации цикла восстанавливаются

Офлайн

#5 Апрель 19, 2019 16:03:17

mummer
Зарегистрирован: 2019-04-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с заменой символов в строке

Понял, огромное спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version