Есть ли проблема с моим кодом замены строки? - PullRequest
2 голосов
/ 21 марта 2019
string = input()

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

print(final)

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

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

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

Ответы [ 3 ]

0 голосов
/ 21 марта 2019
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" 
0 голосов
/ 21 марта 2019

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

Как-то так должно работать:

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

print(final)
0 голосов
/ 21 марта 2019

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

Используйте это вместо этого (спасибо Mateen Ulhaq за идею):

print("".join(x for i, x in enumerate(input()) if i % 3 != 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...