Удалить предпоследний символ из строки

Есть вопрос по задаче: нужно удалить предпоследний символ в строке. Вот пробы кода:

my_string = input("Введите строку: ")
result_string = ""
index = -2
    
for i in range(len(my_string)):
    if i != index:
        result_string += my_string[i]
    
print(result_string)

Не получаю желаемого результата:

Введите строку: python

python

А должен "pythn" по идее выводить. Подскажите, пожалуйста, где ошибка?


Ответы (2 шт):

Автор решения: Alexey Trukhanov

Если вы непременно хотите решать эту задачу пересобирая строку, то надо исправить условие, так как итерационная переменная i никогда не будет отрицательной.

my_string = input("Введите строку: ")
result_string = ""
index = -2

for i in range(len(my_string)):
    if i != len(my_string) + index:
        result_string += my_string[i]

print(result_string)

Туже задачу можно решить, например, срезами:

result_string = my_string[:index] + my_string[index+1:]
→ Ссылка
Автор решения: MarianD

Проблема связана с тем, что индекс i из диапазона range(len(my_string)) не будет никогда отрицательным, значит, он никогда не может равняться -2.

(Отрицательный индекс возможно использовать для выбора элемента или среза, например в форме my_string[-2].)


Как это исправить?

  • Или сравнивать неотрицательные индексы с неотрицательным, например сначала вычислить неотрицательный индекс предпоследнего символа

    next_to_last_index = len(my_string) - 2
    

    и затем очередной (неотрицательный) индекс сравнивать с ним:

    for i in range(len(my_string)):
        if i != next_to_last_index:
            ...
    
  • Или сравнивать отрицательные индексы с отрицательным, заменив параметры функции range():

    for i in range(-len(my_string), 0):
        if i != index:
            ...
    
→ Ссылка