Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 14, 2017 13:19:03

LLIAMAH
Зарегистрирован: 2017-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Добрый день.
Дана задача (в теме), написал цикл
s=input()
a=len(s)
for i in range(-a,0,3):
s=s.replace(s,'')
print (s)
Не могу понять, если вводишь слово Heglo, после выполнения остается ego,
если вводишь Hello - остается eo.
питон двум одинаковым буквам присваивает один индекс??

Офлайн

#2 Авг. 14, 2017 16:27:50

Vintets
Зарегистрирован: 2016-07-05
Сообщения: 41
Репутация: +  6  -
Профиль   Отправить e-mail  

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

Нет. А ты нигде и не обращаешься по индексу.
replace - замена подстроки в строке. Подстрока может быть найдена не в одном месте.
И этот код у тебя не может вывести то, что ты пишешь, он просто стирает ВСЁ.

 s = input()
a = len(s)
for i in range(-a+2,0,3):
    s = s[:i] + s[i+1:]
print (s)

Отредактировано Vintets (Авг. 14, 2017 16:31:01)

Офлайн

#3 Авг. 14, 2017 16:45:27

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

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

 s = "1234567890"
b = [s[i] for i in range(len(s)) if (i+1) % 3 != 0]
print ("".join(b))

Отредактировано krok64 (Авг. 14, 2017 16:46:46)

Офлайн

#4 Авг. 15, 2017 04:06:25

LLIAMAH
Зарегистрирован: 2017-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

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

почему то криво вставилось и обращение к индексу потерялось в квадратных скобках, занесу его в фигурные скобки
s=input()
a=len(s)
for i in range(-a,0,3):
s=s.replace(s{i},'')
print (s)

работает для всех слов, кроме слов, у которых третий и четвертый символ одинаковый

Отредактировано LLIAMAH (Авг. 15, 2017 04:08:28)

Офлайн

#5 Авг. 15, 2017 06:46:15

LLIAMAH
Зарегистрирован: 2017-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

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

прошу оказать консультацию, никак не могу победить задание

Офлайн

#6 Авг. 15, 2017 07:00:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

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

  
>>> s = 'abcdefghi'
>>> 
>>> out = ''.join(c for i, c in enumerate(s) if (i + 1) % 3 != 0)
>>> out
'abdegh'
>>>



Офлайн

#7 Авг. 15, 2017 07:06:41

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

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

оффтопик

j'c for i, c in enumerate(s) if (i + 1) % 3 != 0'
-подобный синтаксис хорошо бы смотрелся

Офлайн

#8 Авг. 15, 2017 07:15:36

LLIAMAH
Зарегистрирован: 2017-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Здорово, конечно, но я пока до такого не дошел в учебнике))
в итоге задание прошел через костыли, но я так и не понял почему мой цикл не срабатывает на слове, если у него две одинаковые буквы подряд?? это самый главный вопрос
ниже ссылка на само задание:
Задание

Офлайн

#9 Авг. 15, 2017 07:33:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

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

LLIAMAH
почему мой цикл не срабатывает на слове, если у него две одинаковые буквы подряд?
str.replace() заменяет все вхождения, а не только первое.



Офлайн

#10 Авг. 15, 2017 08:03:57

LLIAMAH
Зарегистрирован: 2017-08-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

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

по-моему мой replace должен заменять только каждое третье вхождение
видимо я пока малое еще понимаю, буду разбираться, спасибо

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version