+ 2
Нужна помощь. Python.
Умоляю помогите решить проблему, врать не буду уже слезу пустил, задрало меня уже это. Почему вечно у меня не получается? Почему код не удаляет все не буквы и цифры? То есть ввести пару плюсов - один останется. В чем дело? Очень прошу, помогите - я уже совсем отчаялся... https://code.sololearn.com/cX37ZE8L0gk8/?ref=app
3 Respuestas
+ 6
Zener, Ваш код не работает, по причине того что цикл итерирует по списку, каждый раз увеличивая указатель индекса на еденицу. И если вы удалите в этот момент например 2 элемент списка, далее указатель автоматически укажет на 3 элемент, но уже изменненого списка, тоесть это будет 4 элемент первоначального списка, а его 3 элемент вы просто пропустите в цикле фор.
Your code doesn't work, because the loop iterates over the list, incrementing the index pointer by one each time, and if you delete at this moment, for example, the 2nd element of the list, then the pointer will automatically point to the 3rd element, but the already changed list, that is, it will be the 4th element of the original list and you just skip its 3rd element in the fore loop.
Try this:
e = list(input())
def comp():
i = 0
for _ in range(len(e)):
if not e[i].isalnum():
del e[i]
continue
i +=1
comp()
print(e)
+ 2
Смотри, самая важная проблема - ты не увеличиваешь i в цикле, поэтому у тебя сначала проходит весь цикл, где удаляется первый элемент строки, если попадается нужный тебе символ. Потом, continue прокручивает всю иттерацию цикла, поэтому если ты поставишь в конце цикла i += 1, то этот обязательный пункт тоже пропадет и будет удалятся символ, который был перед тем символом, что тебе не нужен, я бы использовал просто pass. И последнее: сделай переменную i локальной в функции, при вызове функции ещё раз i не будет равна 0, как надо будет.
Вот решение, если не понял что-то https://code.sololearn.com/cOx8EkKeVlYa
- 3
я бы помог, но я c++ учу(