Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2019 13:15:30

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

Задача «Удалить каждый третий символ»

Условие
Дана строка. Удалите из нее все символы, чьи индексы делятся на 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 индекса - четвёртый. Объясните, пожалуйста.

Офлайн

#2 Фев. 5, 2019 13:37:38

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Задача «Удалить каждый третий символ»

потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте

 >>> 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]
>>> 

Офлайн

#3 Фев. 5, 2019 15:04:40

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

Задача «Удалить каждый третий символ»

vic57
потому что удаляя элемент меняешь сам список, соотв. и индексы меняются. надо идти с конца списка в таком варианте
Чувак, спасибо, разъяснил)

Офлайн

#4 Июль 30, 2020 20:10:50

zm_murad
Зарегистрирован: 2020-07-30
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача «Удалить каждый третий символ»

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)

Офлайн

#5 Июль 30, 2020 21:05:55

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Задача «Удалить каждый третий символ»

zm_murad



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#6 Июль 30, 2020 23:55:06

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Задача «Удалить каждый третий символ»

 >>> s = "0123456789"
>>> "".join( x for n,x in enumerate(s) if n%3 )
'124578'



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version