Найти - Пользователи
Полная версия: Задача «Удалить каждый третий символ»
Начало » Python для новичков » Задача «Удалить каждый третий символ»
1
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 индекса - четвёртый. Объясните, пожалуйста.
vic57
потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте
 >>> 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
vic57
потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте
Чувак, спасибо, разъяснил)
zm_murad
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)
AD0DE412
zm_murad
Rodegast
 >>> s = "0123456789"
>>> "".join( x for n,x in enumerate(s) if n%3 )
'124578'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB