Форум сайта python.su
0
Условие
Дана строка. Удалите из нее все символы, чьи индексы делятся на 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 индекса - четвёртый. Объясните, пожалуйста.
Офлайн
потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте
>>> 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] >>>
Офлайн
0
vic57Чувак, спасибо, разъяснил)
потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте
Офлайн
0
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 индекса - четвёртый. Объясните, пожалуйста.
Офлайн
44
zm_murad
и вставьте ссылку на его url Офлайн
186
>>> s = "0123456789" >>> "".join( x for n,x in enumerate(s) if n%3 ) '124578'
Офлайн