demon_bach
Фев. 5, 2019 13:15:30
Условие
Дана строка. Удалите из нее все символы, чьи индексы делятся на 3.
Вот моё решение:
a = input()
for i in range(len(a)):
if i%3 == 0:
a = a.replace(a,'')
print (a)
К примеру input = Python, и строку “P” он успешно заменил, но почему вместо ‘h’ удаляет ‘o’. Когда он проходит через i = 3 он почему видит что он делится на 3, но в этом же цикле удаляет вместо 3 индекса - четвёртый. Объясните, пожалуйста.
vic57
Фев. 5, 2019 13:37:38
потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте
>>> l = list(range(10))
>>> for i in range(len(l) - 1,0,-1):
if not i%3 : l.pop(i)
>>> l
[0, 1, 2, 4, 5, 7, 8]
>>>
demon_bach
Фев. 5, 2019 15:04:40
vic57
потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте
Чувак, спасибо, разъяснил)
zm_murad
Июль 30, 2020 20:10:50
demon_bach
УсловиеДана строка. Удалите из нее все символы, чьи индексы делятся на 3.Вот моё решение:a = input()for i in range(len(a)): if i%3 == 0: a = a.replace(a,'')print (a)К примеру input = Python, и строку “P” он успешно заменил, но почему вместо ‘h’ удаляет ‘o’. Когда он проходит через i = 3 он почему видит что он делится на 3, но в этом же цикле удаляет вместо 3 индекса - четвёртый. Объясните, пожалуйста.
Можно создать счетчик и вычитывать от индекса удаления по возрастанию.
a = input()
summ=0
for i in range(len(a)):
if i%3 == 0:
a = a.replace(a,'',1)
summ+=1
print (a)