Есть ли проблема с моим кодом замены строки?

#python #string #loops #replace

#python #строка #циклы #заменить

Вопрос:

 string = input()

for i in range(len(string)):
    if i % 3 == 0:
        final = string.replace(string[i], "")

print(final)
  

Мне задали вопрос: «Учитывая строку, удалите все ее символы, индексы которых делятся на 3».

Ответ для ввода Python такой yton . Однако мой код выдает Pyton .

Код имеет смысл для меня, но я новичок. Любая помощь?

Комментарии:

1. (1) Вы используете одно и то же string в каждом цикле, поэтому в final отражается только последнее изменение, и (2) Вам не следует использовать этот метод, поскольку он приведет к сбою, если строка содержит повторяющиеся символы (т. Е. Вы удалите все h символы, независимо от того, делятся индексы других на 3 или нет).

2. "".join(x for i, x in enumerate("Python") if i % 3 != 0)

Ответ №1:

Проблема в том, что во время выполнения цикла вы переопределяете final переменную каждый раз, когда индекс делится на 3. Вместо этого попробуйте определить конечную переменную перед запуском цикла и добавляйте буквы по мере выполнения цикла над ними, и только тогда, когда их индекс НЕ делится на 3 (таким образом, игнорируя те, где индекс делится на 3).

Что-то вроде этого должно сработать:

 string = input()
final = ""
for i in range(len(string)):
    if i % 3 != 0:
        final  = string[i]

print(final)
  

Ответ №2:

В вашем текущем коде final используется на каждой итерации цикла. Он продолжает обновление, заменяя один символ. На каждой итерации final заменяется другой строкой с удаленной одной буквой из string . После завершения цикла он эффективно заменяет только одну букву, которая в данном случае является «h».

Используйте это вместо (спасибо Матин Ульхак за идею):

 print("".join(x for i, x in enumerate(input()) if i % 3 != 0))
  

Ответ №3:

 string=input()
final=""
for i in range(len(string)):
    if i % 3 != 0:
        final =string[i]


print(final)
  

В вашем коде строка final = string.replace(string[i], "") будет выполняться следующим образом.

Предположим, что ввод «hellobaby»:

 i=0, final="ellobaby"

i=3, final="helobaby"

i=6, final="hellobby"