Удалить предпоследний символ из строки
Есть вопрос по задаче: нужно удалить предпоследний символ в строке. Вот пробы кода:
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 шт):
Если вы непременно хотите решать эту задачу пересобирая строку, то надо исправить условие, так как итерационная переменная 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:]
Проблема связана с тем, что индекс 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: ...